从Google电子表格发送自动发送的电子邮件?

时间:2016-08-19 14:41:08

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

此代码仅在单击运行按钮时有效。

// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";

function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = sheet.getLastRow()-1;   // Number of rows to process
  var dataRange = sheet.getRange(startRow, 2, numRows, sheet.getLastColumn());
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Second column
    var emailSent = row[2];     // Third column
    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
      var subject = "Sending emails from a Spreadsheet";
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 4).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

我希望能够在新邮件发送时自动发送电子邮件而不必点击运行按钮,如果可以的话?

1 个答案:

答案 0 :(得分:0)

@cordova是正确的,您可以在每次更新消息时自动发送电子邮件,而无需单击运行按钮。

您可以使用Script service以编程方式触发它。致电ScriptApp.newTrigger(functionName),返回TriggerBuilder

以下示例显示了如何创建两个时间驱动的触发器 - 一个每6小时触发一次,另一个触发每周一上午9点​​(在脚本设置的时区)。

function createTimeDrivenTriggers() {
  // Trigger every 6 hours.
  ScriptApp.newTrigger('myFunction')
      .timeBased()
      .everyHours(6)
      .create();

  // Trigger every Monday at 09:00.
  ScriptApp.newTrigger('myFunction')
      .timeBased()
      .onWeekDay(ScriptApp.WeekDay.MONDAY)
      .atHour(9)
      .create();
}