【发布时间】:2016-07-01 08:46:26
【问题描述】:
我有一个 Google 表格工作簿,其中有一个工作表,我想用它来保存工作簿和 Google 表单的设置。
我制作了一个自定义的onEdit() 函数,它触发了两个函数 - 一个用于更新工作簿,一个用于更新表单:
function onEdit(e){
var range = e.range;
if (range.getSheet().getName() == "Settings") {
setMonthByMonth(); // Updates the workbook
updateExpenseForm(); // Should update the form
}
}
工作簿功能工作正常。表单功能没有。该函数如下所示:
function updateExpenseForm() {
var categoryId = "1098744733",
currencyId = "595880786",
responsibleId = "2043429480",
formId = "1arB3yibHa_Y69fc_GxE8mU1FzNR3PYgsivYbrQ0LsQk";
var form = FormApp.openById(formId);
var ss = SpreadsheetApp.getActive();
var settingsSheet = ss.getSheetByName("Settings");
var categoryList = form.getItemById(categoryId).asListItem();
var responsibleList = form.getItemById(responsibleId).asListItem();
var currencyList = form.getItemById(currencyId).asListItem();
var categoryValues = settingsSheet.getRange("A5:A").getValues();
var categoryNames = [];
var responsibleValues = settingsSheet.getRange("F5:F").getValues();
var responsibleNames = [];
var currencyValues = settingsSheet.getRange("K5:K").getValues();
var currencyNames = [];
for(var i = 0; i < categoryValues.length; i++) {
if(categoryValues[i][0] != "") {
categoryNames[i] = categoryValues[i][0];
}
}
for(var i = 0; i < responsibleValues.length; i++) {
if(responsibleValues[i][0] != "") {
responsibleNames[i] = responsibleValues[i][0];
}
}
for(var i = 0; i < currencyValues.length; i++) {
if(currencyValues[i][0] != "") {
currencyNames[i] = currencyValues[i][0];
}
}
categoryList.setChoiceValues(categoryNames);
responsibleList.setChoiceValues(responsibleNames);
currencyList.setChoiceValues(currencyNames);
}
我可以从脚本编辑器手动运行它而不会出现任何问题。但是当通过onEdit() 函数触发时它不会运行。如果我将表单函数移到工作簿函数上方,也不会调用工作簿函数。
我错过了什么吗?
【问题讨论】:
-
这是一个可安装的触发器还是一个简单的触发器?也许可安装的触发器可以解决问题developers.google.com/apps-script/guides/triggers/…
标签: google-apps-script google-sheets google-forms