【问题标题】:First row of Google-Sheet is not being considered in JavaScript LoopJavaScript 循环中未考虑 Google-Sheet 的第一行
【发布时间】:2020-09-09 20:42:22
【问题描述】:

我正在尝试定期发送一封自动电子邮件。我的 Google-App-script 工作正常,但它没有通过电子邮件发送第一封电子邮件,即第一行。它从第二行开始电子邮件的循环过程。如何在我的代码中调整这个问题?

function sendemail() {
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var secondSheet = spreadSheet[1];
  var dataRange = secondSheet.getDataRange();
  var data = dataRange.getValues();

 
     for (var i = 1; i < data.length; i++) { 
        (function(val) {
          var row = data[i];
          var emailAddress = row[0]; 
          var message = 'Test Email';
    
          MailApp.sendEmail(emailAddress, message);
          })(i);
       }
    }

在这种情况下,它只向“email2”和“email3”发送电子邮件,而不是“email1”。我如何让它向所有电子邮件发送电子邮件?

【问题讨论】:

  • 你需要以i = 0开头

标签: javascript google-apps-script google-sheets-api


【解决方案1】:

你的 for 循环应该从零开始。当您从 1 开始时,您会跳过数组中的第一封电子邮件。

for (var i = 0; i < data.length; i++) { ... }

来自Mozilla

JavaScript 数组是零索引的。数组的第一个元素位于索引 0 处,最后一个元素位于等于数组长度属性值减 1 的索引值处。

getValues() 返回一个数组,所以你需要小心使用正确的索引。这与 Google 使用的范围索引不同,但在文档中有所说明。

请记住,虽然范围索引从 1、1 开始,但 JavaScript 数组的索引从 [0][0] 开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2022-11-28
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多