实时数据添加新行后立即发送电子邮件警报

时间:2018-01-15 03:17:56

标签: google-apps-script google-sheets google-apps-script-editor

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

以下是我目前的代码。两个问题: 这是每分钟向我发送电子邮件,而不是仅添加新行 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);
} 

1 个答案:

答案 0 :(得分:0)

<强> 1。这是每分钟向我发送电子邮件,而不是仅添加新行

你每分钟都会设置触发器。该程序只执行您的任务。查看Drive API Push Notifications教程,了解如何在资源发生更改时实施通知。

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

您可以查看我的代码here。希望它能为您提供洞察力,帮助您开始工作。