【发布时间】:2020-08-26 13:59:44
【问题描述】:
我有一个谷歌表单,当用户打开表单时,我想在其中填充电子表格中的一些数据。
我有一个 ListItem,我用电子表格数据填充它。直到现在我都使用了 Open(e) 函数和一个触发器,但我发现这个方法只在表单编辑时触发,而不是在表单打开时触发。
你知道我该怎么做吗?
要知道我想要什么,我有两个文件,Code.gs 包含主要功能,如 onOpen 和 onFormSubmit,和 ItemClass,我在其中获取数据并创建 UI。
我将控制台日志设置为 Open(e) 功能,但从未触发。
代码.gs
function onOpen(e) {
console.log({message: 'onOpen', initialData: e});
let items = getItems();
let form = FormApp.openById(PARAMS.formID);
form.setTitle('New Form')
createUI(form, items);
}
ItemsClass.gs
function getItems() {
var email = Session.getActiveUser().getEmail();
var allItems = SpreadsheetApp.openByUrl(PARAMS.sheetURL).getSheetByName("Items Stream").getDataRange().getDisplayValues();
var headers = allItems.shift();
var items = new Array;
for (var i = 0; i < allItems.length; i++) {
var first = allItems[i][1]
var second = allItems[i][2]
items.push(first + "&" + second)
}
return items;
}
【问题讨论】:
-
当您作为表单创建者打开表单编辑器时,表单的
onOpen触发器起作用,而不是当用户打开他填写并提交的表单时。如果您更详细地解释为什么要在onOpen上运行该表单,您可能会想出一种解决方法。您是否希望每次用户填写表单时内容都会发生变化? -
每当用户打开表单时,我希望他看到从电子表格中获取的一些事件,并且他可以从那里修改这些事件并在提交时在电子表格中修改它们
-
如果您希望每次用户打开要填写的表单时更新表单内容 - 这对于 Google 表单是不可能的。您也可以使用网络投票创建自定义 HTML - 如果您有兴趣,我可以发布示例!
-
是的,当然!谢谢你:)
标签: google-apps-script web-applications