0

我是 Google 表格和脚本的新手。我已经设置了一张表来使用 IMPORTHTML 函数获取实时数据。我正在尝试设置一个脚本并触发在 (**@gmail.com) 向我发送包含新行信息的电子邮件,只要将一个或多个新行添加到实时工作表的底部。那可能吗?我尝试使用基于时间的触发器编写代码,以检查是否添加了新行。

以下是我目前拥有的代码。两个问题: 1. 这是每分钟向我发送电子邮件,而不是仅添加新行 2. 这是向我发送总行数而不是添加的新行的信息(我需要它向我发送所有详细信息添加新行中的单元格)

提前非常感谢。

 function sendemailupdates() {

 //setup function
 var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName("Email send"));
  var ActiveSheet = SpreadsheetApp.getActiveSheet();
 var StartRow = 2;
 var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
 var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11);
 var AllValues = WholeRange.getValues();
  var lastRow = ActiveSheet.getLastRow();


  var message = "";
 //iterate loop
 for (i in AllValues) {

    //set current row
 var CurrentRow = AllValues[i];


 //define column to check if sent
 var EmailSent = CurrentRow[11];

    //if row has been sent, then continue to next iteration
 if (EmailSent == "Sent") 
     continue;

 //set HTML template for information
 message +=
      "<p><b>New Row: </b>" + lastRow + "</p>";

     //set the row to look at
  var setRow = parseInt(i) + StartRow;

   //mark row as "sent"
  ActiveSheet.getRange(setRow, 11).setValue("sent");
}

  //define who to send grants to 
 var SendTo = "**@gmail.com";

   //set subject line
 var Subject = "New row added";

  //send the actual email  
  MailApp.sendEmail({
      to: SendTo,
      cc: "",
      subject: Subject,
      htmlBody: message,
});
  Logger.log(message);
} 
4

1 回答 1

0

1. 这是每分钟向我发送电子邮件,而不是仅添加新行时

您将触发器设置为每分钟触发一次。该程序仅执行您指定它执行的操作。查看Drive API Push Notifications教程,了解如何在资源发生更改时实施通知。

2. 这是向我发送总行数而不是添加的新行的信息(我需要它向我发送添加的新行中所有单元格的详细信息)

你可以在这里查看我的代码。希望它能给你洞察力,让你开始你的工作。

于 2018-01-16T06:21:39.613 回答