【发布时间】:2014-09-25 11:32:23
【问题描述】:
我想询问关于在 Google 表单对电子表格进行更改后运行 onChange 触发器。
我有这个更改后发送电子邮件的源代码:
function onChange(e){
var sheet = SpreadsheetApp.getActiveSheet();
var helpRange = sheet.getRange(2, 16);
var debugRange = sheet.getRange(2,17);
var startRow = helpRange.getValue();
var numRows = sheet.getLastRow() - startRow + 1; // Number of rows to process
debugRange.setValue(numRows);
var dataRange = sheet.getRange(startRow, 1, numRows, 11);
var data = dataRange.getValues();
var cal = CalendarApp.getDefaultCalendar();
for (i in data) {
var row = data[i];
var title = row[3];
var desc = "Description: " + row[4] + " Requested Accounts: " + row[5] + " Marketing Support: " + row[6] + " Responsible Salesman " + row[8] + " Email: " + row[9] + " " + row[10]; // Second column
var tstart = row[1];
var tstop = row[2];
var loc = row[7];
cal.createEvent(title, new Date(tstart), new Date(tstop), {description:desc,location:loc});
helpRange.setValue(sheet.getLastRow() + 1);
var emailAddress = sheet.getRange(sheet.getLastRow(), 10).getValue();
var subject = "New Event Created: " + title;
Browser.msgBox(emailAddress + " " + subject + " "+ desc);
MailApp.sendEmail(emailAddress, subject, desc);
}
}
此电子表格应由 Google 表单自动填写(当用户提交答案时),其他用户不应对其进行任何更改。每次我在物理上进行一些更改时都会触发这个 onChange 触发器(正如预期的那样,但这不会发生),但是当我从 Google Form 提交答案时,它也会显示在电子表格中,但不会触发 onChange 触发器。
为什么?
我可以编写它以便在 Google 表单进行更改后触发触发器吗?
【问题讨论】:
-
您想要“表单提交”触发器。见developers.google.com/apps-script/guides/triggers/…
-
另外,SpreadsheetApp.getActiveSheet();仅在电子表格打开时才有效,最好通过 ID 打开
标签: javascript google-apps-script google-sheets spreadsheet google-forms