Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .findIndex()-字符串不是函数。谷歌应用程序脚本_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript .findIndex()-字符串不是函数。谷歌应用程序脚本

Javascript .findIndex()-字符串不是函数。谷歌应用程序脚本,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,问题 .findIndex()正在中断。我给它提供了一个字符串,但它说“这不是一个函数” 目标/背景 自动回复物业查询 函数执行以下操作: 扫描收件箱以识别查询 分解电子邮件,将数据存储在 变量 扫描电子表格,其中包含有关我们所有业务的信息 待售房屋。将电子邮件中的属性ID与 正在寻找匹配项 使用存储在与该属性匹配的电子表格中的数据回复电子邮件 我在哪里 我能够识别电子邮件。 然后我就可以浏览电子邮件并提取相关信息 代码 function autoReply() { var quer

问题

.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();
  }
});
}
函数自动回复(){
var queryInbox=“is:未从以下位置读取:(example@gmail.com)致:(example@gmail.com)示例文本:“;//电子邮件标识
var locatedEmail=GmailApp.search(queryBox);//搜索收件箱中的标识
locatedEmail.forEach(线程=>{
var messages=thread.getMessages();
如果(messages.length==1){
//分解电子邮件
var msgBody=消息[0]。getPlainBody();
var identityNumber=msgBody.split(“\n”)[1]。替换('Property ID:','');
//电子表格
var SS=SpreadsheetApp.openById('exampleId').getSheetByName(“Sheet1”);
var column=1;//列索引
var columnValues=SS.getRange(2,column,SS.getLastRow()).getValues();//第一个是标题行
var searchResult=columnValues.findIndex(identityNumber);//行索引-2
var rowID=searchResult+2;
var houseAddress=SS.getRange(rowID,2.getValue();
//电子邮件正文
var body=“您好,感谢您通过电子邮件向我们发送有关“+houseAddress+”

”; var options={name:“属性查询”,htmlBody:body}; 回复(正文,选项); thread.markRead(); thread.moveToArchive(); } }); }
示例电子邮件

电子表格示例

其他信息:错误显示它正在将propertyID作为字符串传递给.findIndex

修改点:
  • 在脚本中,
    var columnValues=SS.getRange(2,column,SS.getLastRow()).getValues()的
    columnValues
    是二维数组,类似于
    [[“sample1”]、[“sample2”]、[“sample3”]、][code>。
    findIndex
    的参数是一个函数。我认为你的问题就是因为这个
  • 当您想使用
    identityNumber
    的值检索
    searchResult
    的索引时,请进行如下修改
修改脚本: 从…起 到
  • 在脚本中,似乎检索到了搜索行的列“B”
注:
  • 在您的情况下,当使用时,您的脚本也可以按如下方式修改

    •   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();
      
    •   var houseAddress = SS.getRange(2, column, SS.getLastRow()).createTextFinder(identityNumber).findNext().offset(0, 1).getValue();
      
参考:

console.log(columnValues)
你确定你有一个数组吗?我在主脚本之外设置了一个小的示例脚本来让它工作。单列仍然是一个二维数组,请尝试使用flat()
  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();
  var houseAddress = SS.getRange(2, column, SS.getLastRow()).createTextFinder(identityNumber).findNext().offset(0, 1).getValue();