【发布时间】:2021-07-28 17:29:33
【问题描述】:
我正在制作用于预约的表格,在此表格中,用户可以选择可用日期,并且我有一个脚本可以每天从电子表格中更新日期选择,但是当有人打开/填写时,该脚本不会自动运行形式,因此日期选择不会自动更改。我每次都需要运行脚本来更新选项
有人知道如何让谷歌脚本在用户/客户每次打开表单时自动运行/更新吗?
这是表格(所以这个日期选择来自电子表格,电子表格每天都会更新,但是当我打开表格时它不会自动更改/更新)
这是我的脚本代码(代码工作正常,但不会自动更新到表单)
var ssID = "1hil07Z2wvTXH1szX9bNfPKVLDQVO36ACQFGOU6_VUI0";
var formID="1SD5BenAnNxNz-wtw0YPut6YdTf7a62zHn_z3VrTdTUU";
var wsData = SpreadsheetApp.openById(ssID).getSheetByName("DATA");
var form = FormApp.openById(formID);
function main(){
var labels = wsData.getRange(1,1,1,wsData.getLastColumn()).getValues()[0];
labels.forEach(function(label,i){
var options = wsData
.getRange(2, i+1,wsData.getLastRow()-1,1)
.getDisplayValues()
.map(function(o){return o[0]})
.filter(function(o){return o !== ""});
//Logger.log(options);
updateDropDownUsingTitle(label,options);
});
}
function updateDropDownUsingTitle(title,values) {
var title = "Tanggal Penjemputan";
var items = form.getItems();
var titles = items.map(function(item){
return item.getTitle();
});
var pos = titles.indexOf(title);
var item = items[pos];
var itemID = item.getId();
updateDropdown(itemID,values);
}
function updateDropdown(id,values) {
var item = form.getItemById(id);
item.asListItem().setChoiceValues(values);
}
【问题讨论】:
-
没有通过应用程序脚本对正在运行的 Google 表单进行交互式编程访问。如果您想以交互方式访问表单,则需要创建一个 web 应用程序。 Google 表单的唯一编程访问从提交点开始。您还可以在激活表单之前通过在表单编辑器中编写的代码更新选项。
标签: google-apps-script spreadsheet google-forms