Google apps script 变量似乎未定义,但我可以';我找不到

Google apps script 变量似乎未定义,但我可以';我找不到,google-apps-script,Google Apps Script,脚本失败,电子邮件无效:未定义(第29行,文件“newCode”) 我已经克服了一些错误,但我仍然坚持这一点。 除了错误消息之外,我还找到了一个调试器选项并运行了它。 这没有多大意义,但这句话似乎与投诉相符。 “电子邮件地址未定义” 我觉得这可能与我在这里所做的事情有关: var emailAddress = row[3]; // columnD 我想我在借用的代码中所做的只是更改我想从哪个列中提取信息。在本例中为电子邮件地址。据我所知,Google Sheets中的D列被引用为“3”

脚本失败,电子邮件无效:未定义(第29行,文件“newCode”)

我已经克服了一些错误,但我仍然坚持这一点。 除了错误消息之外,我还找到了一个调试器选项并运行了它。 这没有多大意义,但这句话似乎与投诉相符。 “电子邮件地址未定义”

我觉得这可能与我在这里所做的事情有关:

    var emailAddress = row[3]; // columnD
我想我在借用的代码中所做的只是更改我想从哪个列中提取信息。在本例中为电子邮件地址。据我所知,Google Sheets中的D列被引用为“3”,ColA=0,ColB=1…ColD=3

我不能硬编码的电子邮件地址,因为它会变化一行到下一行。 有人能告诉我这是怎么回事吗

    function Initialize() {
      var triggers = ScriptApp.getProjectTriggers();
      for(var i in triggers) {
        ScriptApp.deleteTrigger(triggers[i]);
      } 
      ScriptApp.newTrigger("SndMail()")
      .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
      .onFormSubmit()
      .create();
    }

    // Write a value to column G for rows where an email sent successfully and sends non-duplicate emails with data from the current         spreadsheet.
    function SndMail() {
      var EMAIL_SENT = 'Sent';
      var sheet = SpreadsheetApp.getActiveSheet();
      var startRow = 2; // First row of data to process
      var numRows = 75; // Number of rows to process. 
      // Fetch the range of cells A2:G76
      var dataRange = sheet.getRange(startRow, 2, numRows);
      // Fetch values for each row in the Range.
      var data = dataRange.getValues();
      for (var i = 0; i < data.length; ++i) {
        var row = data[i];
        var emailAddress = row[3]; // columnD
        var message = 'Please create a Logistics Case and log the CAS# for: <br/> row[4 + 5]'; // columnE
    var mailout = row[6]; // columnG
        if (mailout != EMAIL_SENT) { // Prevents sending duplicates
          var subject = 'Logistics Claim case request';
          MailApp.sendEmail(emailAddress, subject, message);
          sheet.getRange(startRow + i, 3).setValue(Sent);
          // Make sure the cell is updated right away in case the script is interrupted
          SpreadsheetApp.flush();
        }
      }
    }
函数初始化(){
var triggers=ScriptApp.getProjectTriggers();
for(触发器中的var i){
ScriptApp.deleteTrigger(触发器[i]);
} 
ScriptApp.newTrigger(“SndMail()”)
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onFormSubmit()
.create();
}
//在G列中为成功发送电子邮件的行写入一个值,并发送包含当前电子表格数据的非重复电子邮件。
函数SndMail(){
var EMAIL_SENT=‘SENT’;
var sheet=SpreadsheetApp.getActiveSheet();
var startRow=2;//要处理的第一行数据
var numRows=75;//要处理的行数。
//获取单元格A2:G76的范围
var dataRange=sheet.getRange(startRow,2,numRows);
//获取范围中每行的值。
var data=dataRange.getValues();
对于(变量i=0;i

应该发生的是,当提交谷歌表单时,表单会被更新,脚本会运行以向目标收件人发送电子邮件(D列中的电子邮件地址),然后将文本“发送”放入G列。然后,G列会过滤后续功能运行,避免重复发送电子邮件。

此修改如何

修改点:
  • sheet.getRange(startRow,2,numRows)
    检索值时,只检索列“B”。
    • 这样,
      var-emailAddress=row[3]
      就变成了
      undefined
我认为你的问题的原因是这样的。为了避免错误,如何修改如下内容

修改脚本: 发件人: 致: 或

参考:

如果我误解了你的问题,我道歉。

谢谢!没有带我一路回家,但让我离这里足够近,我可以从这里走路…这意味着它帮助我进一步了解并解决了问题!
var dataRange = sheet.getRange(startRow, 2, numRows);
var dataRange = sheet.getRange(startRow, 2, numRows, sheet.getLastColumn());
var dataRange = sheet.getRange(startRow, 2, numRows, 7); // A2:G76 ?