google-apps-script - 要触发的 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();
}
}
}`
解决方案
如果我正确理解了您的问题,则代码将贯穿所有工作表,因为这行代码
var dataRange = sheet.getRange(startRow, 2, numRows, sheet.getLastColumn());
范围从第一行到最后一行。如果您只想获取最后一行,请将其更改为:
var dataRange = sheet.getRange(numRows, 2, 1, sheet.getLastColumn());
不要忘记getRange()
格式是getRange(row, column, numRows, numColumns);
更多信息在这里。
推荐阅读
- python - 如何断言后跟 sys.exit() 的日志记录错误
- ansible - 在 ansible 中将 zip 文件解压到 /usr/bin/ 时出现权限错误
- javascript - 制作 HTML5 视频的 YouTube iframe 音频
- python - 在 Python 中同时执行一组昂贵的任务
- vhdl - 如何在 VHDL 中为标准逻辑创建布尔数据类型
- c++ - C++ 令牌处理程序
- ios - 使用模拟器测试 CarPlay 音频
- azure - 当所有链接的子工作项满足特定条件时更改 Azure DevOps 父工作项状态?
- php - 格式为 YYYYMMDDTHHiiss 的两个日期之间的差异
- excel - VBA将值输入循环内过滤数据的前X个可见单元格