添加一个记录每次从脚本发送电子邮件的日志

时间:2019-09-11 13:45:24

标签: google-apps-script google-sheets

我有一个将回复发送到电子表格的表格。然后,电子表格会在未将回复标记为已审阅时发送电子邮件。我想保留每次从脚本发送电子邮件的日志。

我已经在此处创建电子表格和应用程序脚本:https://docs.google.com/spreadsheets/d/1fplP0xdzunRk4e4CRU3-csbyf6iuD8fjpyYUZM2SxfU/edit?usp=sharing

function sendDay3ReminderEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 1000;   // Number of rows to process
  var numOfColumns = sheet.getLastColumn();
  var dataRange = sheet.getRange(startRow, 1, numRows, 
numOfColumns);
  var data = dataRange.getValues(); 
  var dt=new Date();
  var dv=new 
Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
  for (var i=0;i<data.length;i++) {
    var row = data[i];
    var reportNumber = row[1];  // 2nd column B
    var emailAddress = row[22];  // 23rd column W
    var ssLink= row[23];  // 24th column X
    var message = ("Report #"+reportNumber+" on the Bully Report 
 Response Spreadsheet has been not been reviewed. Please review the 
issue and indicate its status on the response spreadsheet found 
here: "+ssLink);      // sixth column
    var d=new Date(row[21]);// 22nd column V
   if (!row[0] && new 
Date(d.getFullYear(),d.getMonth(),d.getDate()).valueOf()<=dv) {
      var subject = ("Your attention is needed on Bullying Report 
Number "+reportNumber);
       MailApp.sendEmail(emailAddress, subject, message);
    }
  }
}

我的目标是每次运行脚本并发送电子邮件时记录一些东西。

1 个答案:

答案 0 :(得分:1)

作为一种解决方法,我们建议在第一封电子邮件之后发送第二封电子邮件,该电子邮件仅用于跟踪操作(因此它将包含日期,时间,报告编号,第一封电子邮件的收件人...)。您可以将第二封电子邮件发送到您自己的邮件帐户或日志邮件。请考虑收件箱size quotas,以防止丢失日志。我们希望这种解决方法对您有用。请随时添加信息,以便我们为您提供更好的帮助。

更新

在研究了新方法之后,我现在建议使用logging environment。您可以在文档中看到,有很多方法可以在Apps Script中存储日志。一种基本的方法是使用getLog方法来记录日志(即在文档,电子表格,邮件等上)。您可以在每次发送邮件时使用stackdriver logs保存行;如果您的项目在Google Cloud上,则此选项特别有用。还有Properties Service,它提供了一些用于在各种情况下进行日志记录的操作。如其文档中所述。请注意logging quotas,以防止信息丢失。如果您需要这种新方法的帮助,或者我的信息不够清楚,请随时写信。