可安装触发器未安装在已发布的 Google 表单编辑器附加组件中

问题描述 投票:0回答:1

我开发了一个简单的 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 上看到过以下问题:

但这些并不能真正回答我的问题,因为它们主要与 Google Sheets 有关。我的插件是 Google 表单编辑器插件。

google-apps-script triggers google-forms add-on
1个回答
0
投票

预计会出现 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

相反,您可以尝试诸如

通用操作之类的操作来运行函数,就像问题工作区插件的可安装触发器中一样。

© www.soinside.com 2019 - 2024. All rights reserved.