1

我们的 Workspace Add-on 使用可安装的日历事件触发器。

只要有日历更新事件,就会触发触发器。

ScriptApp.newTrigger('calendarTrigger').forUserCalendar(calendarId).onEventUpdated().create();

在我们部署新版本的附加组件之前,这工作正常。

部署后,可安装触发器仍然存在,但与以前的部署版本相关联。

在此处输入图像描述

任何日历事件都会被忽略,触发器就在那里什么也不做。

我们可以编写插件来删除触发器并重新添加它,但这需要用户打开我们的插件。

ScriptApp.deleteTrigger(tr);
ScriptApp.newTrigger('calendarTrigger').forUserCalendar(calendarId).onEventUpdated().create();

问题是日历事件在此手动干预之前被忽略(可能在一段时间内不会发生)。

当我们部署新版本的应用程序时,我们应该如何更新触发器?

4

2 回答 2

2

确保在每次新部署时更新 GCP 平台中的 Workspace 插件,以执行此操作:

  1. 访问 GCP
  2. Marketplace > Google Marketplace SDK > 应用配置
  3. 在 Deploy using Apps Script Deployment Id(第一项)中更新 Deployment Id。

部署 ID 位于 Apps Script Project > Deploy(蓝色按钮,右上角)> Manage Deployments > Pick the active one(左侧),并显示其部署 ID。

另请注意,如果您创建脚本的新版本,那么我建议您在部署时单击当前版本,然后单击笔(顶部),然后单击“添加新版本”。这样一来,一个新版本的部署就会出现,而不是多个部署的不同版本处于活动状态。

于 2021-09-23T07:51:13.170 回答
1

更新:预期行为:

谷歌在Issue Tracker提供了更新,说明这是按预期工作的:

这是预期的行为。如果使用新部署更新加载项,则使用旧部署安装的 Workspace 加载项触发器将被禁用。

要在不禁用当前部署触发器的情况下更新 Workspace 插件,请编辑版本化部署而不是创建新部署。

团队将考虑改进 UI,以避免围绕此问题的潜在混淆。

问题:

前段时间在问题跟踪器中报告了相同的行为,尽管在这种情况下指的是时间驱动的触发器:

这似乎发生在通过 Workspace 插件安装的所有触发器上:一旦 Workspace 插件更新为新部署,附加到旧部署的触发器就会停止执行

解决方法:

虽然目前尚不清楚这是否是预期行为,但在不禁用当前部署触发器的情况下更新 Workspace 加载项的一种可能解决方法(如Neven Subotic所解释)是编辑版本化部署而不是创建新的.

于 2021-09-23T12:55:06.277 回答