0

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

任何帮助将不胜感激。这是我现在拥有的代码:

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);
  }
}
4

3 回答 3

0

当您定义这样的数据范围时

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

您正在从A3:C5

你也可以参考文档

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

于 2012-07-19T21:57:23.133 回答
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);
于 2012-11-30T22:49:14.700 回答
0

当你像这样定义你的 dataRange 时:

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

您从 startRow第 1 列中读取numRows的数据,但只有2 列(最后一个值是“宽度”),因此您可以轻松修改脚本以仅通过更改最后一个值来获取所需的所有列。然后使用 row[i].toString(),您将获得逗号分隔的字段。

然后,您可能希望使用 HTML 格式获得更好的演示文稿,例如在表格中显示数据,但这超出了您的问题范围;-)

于 2012-07-19T20:49:34.603 回答