[英]How to use Google Sheets onEdit() trigger to run function to update Google Form
我有一個 Google Sheets 工作簿,其中有一個工作表,我想用它來保存工作簿和 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()
函數觸發時它不會運行。 如果我將表單函數移到工作簿函數上方,工作簿函數也不會被調用。
我錯過了什么嗎?
您很可能正在使用一個簡單的觸發器。 他們無法訪問需要授權的服務,例如 Forms Service。 解決方案是改用可安裝的觸發器。
來自https://developers.google.com/apps-script/guides/triggers/#restrictions
限制
因為簡單觸發器會自動觸發,不需要用戶授權,所以它們受到以下幾個限制:
...
- 他們無法訪問需要授權的服務。 例如,簡單觸發器無法發送電子郵件,因為 Gmail 服務需要授權,但簡單觸發器可以使用匿名的語言服務翻譯短語。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.