如何从电子表格发送电子邮件

时间:2012-07-19 19:37:56

标签: google-apps-script

我在Google文档上有一个电子表格,其中包含我们正在处理的工作任务。我想要它做的是将整行发送给预期的收件人,但我只能从电子邮件地址后的第一列发送信息。一切都有截止日期,我希望在接近该日期时发送提醒,但我不知道该怎么做。

非常感谢任何帮助。 这是我现在的代码:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 3;  // First row of data to process
  var numRows = 2;   // 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];       // Column B, Column C, Column D, Column E, Column F, Column G
    var subject = "Email Test Spreadsheet";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

3 个答案:

答案 0 :(得分:0)

当您像这样定义dataRange时:

var dataRange = sheet.getRange(startRow, 1, numRows, 2)

您从 numRows 的startRow 第1列读取数据,但仅 2列(最后一个值为' width' )这样您就可以通过更改最后一个值来轻松修改脚本以获取所需的所有列。然后使用row [i] .toString(),您将得到逗号分隔的字段。

那么您可能希望使用HTML格式更好地呈现表格中的数据,但这不在您的问题中;-)

答案 1 :(得分:0)

定义像这样的数据范围时

var dataRange = sheet.getRange(startRow, 1, numRows, 2);

您正在从A3:C5

获取数据

您也可以参考documentation

如果您可以根据问题描述发布示例电子表格,那么其他人可以帮助您。

答案 2 :(得分:0)

这篇文章:var message = row[1];只会获得数组中的第二个元素(索引1)。您需要遍历该行以获取所有数组元素。

var message = row[1];
message.concat(row[2]);
message.concat(row[3]);

等等。或者你可以建立一个循环。

http://www.w3schools.com/jsref/jsref_concat_string.asp

为了获得范围,为什么要这么做? sheet.getRange("A2:B3"); 这就是你说你试图在该行上方的评论中获得的范围,尽管它只有4个单元格。 sheet.getRange("A2:G3")会在G列中输出两行。 当然,如果向表单添加行,则必须每次都修改代码。

相反,试试这个。

var bottomRow = sheet.getLastRow();
var rangeInA1 = "A2:G"+bottomRow;
var dataRange = sheet.getRange(rangeInA1);