根据编辑的栏,将电子邮件发送到以前的谷歌表单提交
Send email to previous Google Form Submit depending on which column was edited
我的Google脚本有问题。它实际上是按原样工作的,但问题是,在提交表单并有人提交新表单后,第一个提交的表单将不再发送电子邮件,因为它正在寻找LastRow。我很难让它正常工作。。。有人能帮忙吗?
以黄色突出显示的栏,供应商填写后,右侧第5栏(绿色)也应填写"已发送",让用户知道已向创建表单的人发送了电子邮件。
这是一张表格图片,希望能有更好的想法http://i57.tinypic.com/34tej4w.png
function sendNotification() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getSheets()[0];
var startRow = sheet.getLastRow();
var dataRange = sheet.getRange(startRow, 1, 1, 21) ;
var data = dataRange.getValues();
var row;
for (i in data) {
row = data[i];
var EMAIL_SENT = 'Sent';
var emailSent = row[19]; // Third column
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
//Define Notification Details
var subject = "Row 12 has been edited!";
var body =
'<html><body><b><u>Product Check</u></b>'
+ '<br><b>Time: </b>'
+ row[0]
+ '<br><b>Email requested: </b>'
+ row[1]
+ '<br><b>Request date: </b>'
+ row[2]
+ '<br><b>ISBN: </b>'
+ row[4]
+ '<br><b>Product Title: </b>'
+ row[7]
+ '<br><b>Supplier Name: </b>'
+ row[8]
+ '<br><b>PO Number: </b>'
+ row[10]
+ '<br><b>Comments: </b>'
+ row[12]
+ '<br>View the spreadsheet here: <a href="#"><b>Click here</b></a> </html></body>';
if (row[13] != '' && row[0] != '' && row[18] == '') {
var recipients = row[1];
var subject = "Column 'N' was edited!";
sheet.getRange(startRow, 19, 1, 1).setValue(EMAIL_SENT) && sheet.getRange(startRow, 19, 1, 1).setBackgroundColor("#00ff00");
SpreadsheetApp.flush();
MailApp.sendEmail({
to: recipients,
subject: subject,
htmlBody: body});
}
您描述的行为是正常的,并且您自己已经发现了起源。。。
不使用最后一行作为引用,只使用与行[19]对应的列中没有"EMAIL_SENT"的第一行,这一行将是正确的一行。
但在并发的情况下,只会处理一个请求,所以我建议您每隔几分钟使用一个定时器触发器来运行这段代码,以便在每种情况下都能处理所有提交。
另一种解决方案是使用onForm-Submit触发器,但从处理程序回调对象而不是工作表中获取值(e.namedValues,请参阅此处的文档),但这意味着代码中会有更多更改。在后一种情况下,每一份提交都将独立处理,即使是两份或两份以上的提交都在一起。
相关文章:
- 使用<ahref>使用谷歌脚本在谷歌表单GUI中标记
- 谷歌表单-根据分配给谷歌应用程序的工作为商业用户预先填充多项选择列表
- 有没有一种方法可以使用Javascript检索谷歌表单ITSELF(而不是电子表格)的数据
- 谷歌表单xml有问题
- 如何在谷歌表单中添加动态字段
- 应用程序脚本-拆分谷歌表单复选框用逗号回答
- CORS问题,同时提交数据到谷歌表单的角度
- 使用谷歌表单javascript插件而不向公众发布
- 谷歌表单:将项目添加到响应中
- 如何在您的网站中嵌入自定义的谷歌表单
- 是否可以使用JavaScript将数据写入谷歌表单
- 谷歌表单替代了多个
- 谷歌表单:在文档的电子邮件中包含超链接'谷歌硬盘的位置
- 当将页面提交到谷歌表单时,它将打印结果,然后使用 javascript 重定向到主页
- 通过AJAX提交谷歌表单后,停止页面重定向
- 使用谷歌应用脚本提交对谷歌表单的回复
- 提交旧的谷歌表单,然后重定向到另一个页面
- 根据编辑的栏,将电子邮件发送到以前的谷歌表单提交
- 尝试使用数据从谷歌表单响应创建谷歌表单每当有人提交表单
- 如何在没有确认页面的情况下提交谷歌表单数据