我开发了一个简单的 Google 表单编辑器插件,可以将 Google 表单响应发布到我在其他地方创建的网络服务。这是下面的代码:
function onInstall(e) {
ScriptApp.newTrigger("onSubmit").forForm(FormApp.getActiveForm()).onFormSubmit().create();
onOpen(e);
}
function onSubmit(e) {
const items = [];
for (const res of e.response.getItemResponses()) {
const item = res.getItem();
items.push({ "title": item.getTitle(), "response": res.getResponse(), "desc": item.getHelpText() });
}
const response = UrlFetchApp.fetch("https://my-web-service.app/gform", {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify({
"form_title": e.source.getTitle(),
"form_id": e.source.getId(),
"response_id": e.response.getId(),
"items": items,
"timestamp": e.response.getTimestamp(),
}),
"muteHttpExceptions": true,
});
console.log(`Response Code: ${response.getResponseCode()}`);
}
onInstall(e) {}
应该触发并创建我的可安装触发器。但这并没有发生。当其他用户从 Google Workspace Marketplace 安装我的插件时,触发器不会安装或触发。这是为什么?我之前在 Stack Overflow 上看到过以下问题:
onFormSubmit()
扳机未触发。
预计会出现 The trigger won't install or fire when another user installs my add-on from the Google Workspace Marketplace
,因为onInstall(e) 的文档指出:
当用户从 Google 文档、表格、幻灯片或表单中安装这是该文档的链接:编辑器插件
时,onInstall(e)
触发器会自动运行。当用户从 Google Workspace Marketplace 网站安装插件时,触发器不会运行。
https://developers.google.com/apps-script/guides/triggers#oninstalle
相反,您可以尝试诸如通用操作之类的操作来运行函数,就像问题工作区插件的可安装触发器中一样。