Bja*_*aeg -1 javascript google-sheets google-apps-script
问题
.findIndex() 正在崩溃。我向它提供了一个字符串,但它说“这不是一个函数”
目标/背景
自动回复房产查询
函数执行以下操作:
扫描收件箱以识别询问。
分解电子邮件,将数据存储在变量中。
扫描包含我们所有待售房屋信息的电子表格。将电子邮件中的媒体资源 ID 与电子表格进行匹配以查找匹配项。
使用电子表格中存储的与该属性匹配的数据回复电子邮件。
我要去哪里
我能够识别该电子邮件。然后我就可以扫描电子邮件并提取相关信息。
代码
function autoReply() {
var queryInbox = "is:unread from:(example@gmail.com) to:(example@gmail.com) Example Text:"; // Email Identification
var locatedEmail = GmailApp.search(queryInbox); // Search Inbox for Identification
locatedEmail.forEach(thread => {
var messages = thread.getMessages();
if (messages.length === 1) {
// BREAKING DOWN THE EMAIL
var msgBody = messages[0].getPlainBody();
var identityNumber = msgBody.split("\n")[1].replace('Property ID: ','');
// SPREADSHEET
var SS = SpreadsheetApp.openById('exampleId').getSheetByName("Sheet1");
var column = 1; // column Index
var columnValues = SS.getRange(2, column, SS.getLastRow()).getValues(); //1st is header row
var searchResult = columnValues.findIndex(identityNumber); //Row Index - 2
var rowID = searchResult + 2;
var houseAddress = SS.getRange(rowID, 2).getValue();
// EMAIL BODY
var body = "<p>Hi, thank you for emailing us about " + houseAddress + ".</p>";
var options = { name: "Property Enquiry", htmlBody: body };
thread.reply(body, options);
thread.markRead();
thread.moveToArchive();
}
});
}
Run Code Online (Sandbox Code Playgroud)
电子邮件示例
附加信息:错误显示它将 propertyID 作为字符串传递给 .findIndex
columnValuesofvar columnValues = SS.getRange(2, column, SS.getLastRow()).getValues()是二维数组,如[["sample1"],["sample2"],["sample3"],,,]. 的参数findIndex是一个函数。我认为你的问题的原因就是这个。searchResult当您想使用 的值检索索引时identityNumber,请修改如下。var searchResult = columnValues.findIndex(identityNumber);
Run Code Online (Sandbox Code Playgroud)
到
var searchResult = columnValues.findIndex(([r]) => r == identityNumber);
Run Code Online (Sandbox Code Playgroud)
在您的情况下,当使用TextFinder时,您的脚本也可以修改如下。
从
var columnValues = SS.getRange(2, column, SS.getLastRow()).getValues(); //1st is header row
var searchResult = columnValues.findIndex(identityNumber); //Row Index - 2
var rowID = searchResult + 2;
var houseAddress = SS.getRange(rowID, 2).getValue();
Run Code Online (Sandbox Code Playgroud)
到
var houseAddress = SS.getRange(2, column, SS.getLastRow()).createTextFinder(identityNumber).findNext().offset(0, 1).getValue();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3617 次 |
| 最近记录: |