【问题标题】:How to get an email sent from only the last row of my form如何仅从表单的最后一行发送电子邮件
【发布时间】:2018-04-12 11:56:02
【问题描述】:

我对编码很陌生,我无法弄清楚我做错了什么。我需要从表单中的最后一个条目发送的 1 封电子邮件。因此,当学生提交他们的预测试时,他们会收到一封包含预测试结果的电子邮件。 这是我的代码的样子:

function sendEmails() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var startRow = 3;  // First row of data to process
      var numRows = 1;   // Number of rows to process
      // Fetch the range of cells A2:B3
      var dataRange = sheet.getRange(startRow, 3, numRows, 1)
      // Fetch values for each row in the Range.
      var data = dataRange.getValues();
      for (i in data) {
      var row = data[i];
      var emailAddress = row[1];  // Second column
      var message = row[2];       // Third column
      var subject = "Résultat de formatif";

      // This logs the value in the very last cell of this sheet
     var lastRow = sheet.getLastRow();
     var lastColumn = sheet.getLastColumn();
     var lastCell = sheet.getRange(lastRow, lastColumn);
     Logger.log(lastCell.getValue());


    MailApp.sendEmail(emailAddress, subject, message);
  }
}

【问题讨论】:

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


【解决方案1】:

我这样做是:

  • 在工作表中添加单独的列“STATUS”
  • 在您的电子邮件发送函数中遍历行并仅对“STATUS”为空的行进行操作
  • 连续发送邮件成功后,往“STATUS”列放点东西

【讨论】:

    【解决方案2】:

    请查看event object documentation

    您可以install a "trigger" 在每次提交表单时自动运行您的脚本。因为这是每次提交都会触发的,所以您不必担心尝试查找最后一行或电子邮件是否已经发送。

    function sendEmails(formResponse) {
      var answers = formResponse.values;
      var emailAddress = answers[1];  // Second column
      var message = answers[2];       // Third column
      var subject = "Résultat de formatif";
    
      // This logs the value in the very last cell of this sheet
      var range = formResponse.range;
      var row = range.getRow();
      var column = range.getLastColumn();
    
      try {
        MailApp.sendEmail(emailAddress, subject, message);
      } catch (e) {
        console.error("Did not send email to " + emailAddress + ". See error: " + e);
        range.getSheet().getRange(row, column+1).setValue("EMAIL NOT SENT");
        return;
      } 
      range.getSheet().getRange(row, column+1).setValue("EMAIL SENT");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2012-03-15
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多