首页 > 解决方案 > 要触发的 Google Apps 脚本最新表单响应 -

问题描述

我正在考虑在提交谷歌表单时触发自动电子邮件。它工作正常,但是,我只想触发最新的响应。相反,它再次贯穿整个工作表。任何帮助都感激不尽

// 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[5];  // First column
    var message = 'Hello,'+ "\n"
                   +  "\n" 
                   + 'We have received an inquiry from your customer in Inbound'+ ".\n"
                   + "\n"
                   + 'Lead No is' + " - " 
                   +  row[1] + "\n"
                   +  "\n"
                   + 'Kindly arrange a callback'+ "\n"
                   + "\n"
                   + 'Regards,'+ "\n"
                   + 'Team Inbound'; // Second column
    var emailSent = row[7];     // Third column
    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
      var subject = "Inbound Inquiry"+ " - " + row[1];
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 8).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}`

标签: google-apps-script

解决方案


如果我正确理解了您的问题,则代码将贯穿所有工作表,因为这行代码

var dataRange = sheet.getRange(startRow, 2, numRows, sheet.getLastColumn());

范围从第一行到最后一行。如果您只想获取最后一行,请将其更改为:

var dataRange = sheet.getRange(numRows, 2, 1, sheet.getLastColumn());

不要忘记getRange()格式是getRange(row, column, numRows, numColumns);

更多信息在这里


推荐阅读