首页 > 解决方案 > 如何在谷歌脚本中使用for循环发送电子邮件?

问题描述

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2000;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 2)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Second column
    var subject = "Sending emails from a Spreadsheet";
    MailApp.sendEmail(emailAddress, subject, message, {noReply:true});
  }
}

在这里,我想将 C2、D2、E2、F2 逐行数据发送到 A2,将 C3、D3、E3、F3 逐行数据发送到 A3,并且循环应该针对工作表中的所有行运行。

我有一个脚本将共同主题主体发送给每个人。

在此处输入图像描述 但是这个脚本无助于解决我的问题。

有人可以帮我以上述模式发送数据吗

标签: google-apps-scriptgoogle-sheets

解决方案


尝试使用这个:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  // Get all values in the spreadsheet
  var data = sheet.getDataRange().getValues();
  // Loop through all rows with data:
  for(var i = 1; i < data.length; i++) {
    var row = data[i];
    var emailAddress = row[0];  // Get email address
    // Build message body (you could also do this with a loop):
    var message = row[2] + "\n" + row[3] + "\n" + row[4] + "\n" + row[5]
    var subject = "Sending emails from a Spreadsheet";
    MailApp.sendEmail(emailAddress, subject, message, {noReply:true});
  }
}

此代码获取工作表中的所有值并循环遍历它们,因此您无需指明要循环遍历的行数。您必须指明从哪一行开始(在本例中为第二行,因此是var i = 1)。

此外,在构建消息正文时,可以使用循环,但我不确定它是否值得。如果有更多的列,那将是有意义的。

此外,您尝试使用for...in,不建议将其用于遍历数组,并且您没有使用正确的语法。

告诉我这是否适合你。


推荐阅读