以编程方式创建触发器时如何使用版本化部署?

How to use versioned deployments when programmatically creating triggers?

以编程方式创建触发器时,即通过 ScriptApp.newTrigger(),它是否始终指向 "head" 部署或最新发布(版本控制)的部署? (请参阅有关部署类型的文档 here。)

对于上下文,我正在多用户环境中分发一个脚本,该脚本依赖于每隔几分钟 运行 的触发器。我试图确保在开发中所做的更改(即在发布这些更改之前)不会立即被脚本的所有客户端接收,因为这实际上意味着开发中的任何代码更新都会立即对所有用户生效。

如果触发器只能指向 head 部署,将它们指向可以在 dev(head 版本)中安全更新的代码的最佳实践是什么?

是的,它始终指向 "head",因为版本化部署仅适用于 Gmail 插件。

以上内容基于发布 Gmail 附加组件的唯一指南包括创建版本化部署的步骤 -> https://developers.google.com/gmail/add-ons/how-tos/publish#step_1_create_a_versioned_deployment

  1. 您想知道 ScriptApp.newTrigger() 安装触发器时使用的是哪个版本的脚本。
  2. 您想通过select脚本版本了解安装触发器的方法。

我理解你上面的问题。如果我的理解是正确的,那么这个答案呢?请将此视为几个答案之一。

第 1 题的答案:

  • ScriptApp.newTrigger()安装触发器时,虽然"Deployment"的值没有显示在"Current project's triggers"中,但最新的脚本是运行通过安装的触发器。这种情况与脚本的版本无关。使用当前最新的脚本。

  • 如果触发器是手动安装的,可以select部署版本在"Choose which deployment should run"。

    • 遗憾的是,在现阶段,脚本还无法做到这一点。我认为这可能会在未来的更新中实现。

问题 2 的答案:

为了通过 selecting 版本的脚本安装触发器,作为解决方法,我建议使用库。此解决方法的流程如下。这是示例流程。

  1. 创建 2 个独立项目。
    • 一个用作图书馆。
    • 另一个作为项目使用库。
  2. 在项目中使用库,例如​​function myFunction() {lib.myFunction()}。此脚本 运行s 库的功能。
    • 将库安装到这个项目。
    • 您可以 select 通过 select 库的版本 select 使用户成为 运行 的脚本。
    • 触发器已安装到此项目。
  3. 图书馆的项目是开发项目。它通过脚本编辑器"Manage version"管理开发脚本的版本。
  4. 安装触发器后,它运行s ScriptApp.newTrigger("myFunction")在项目中使用库。此时触发器为运行时,使用的是selected版本的库。这样,不使用库的最新脚本。用户可以使用您 select 编辑的版本的稳定脚本。
笔记:
  • 您还可以在清单文件 (appsscript.json) 中查看库的版本。这个文件可以被脚本修改。这样,您还可以通过脚本修改触发器使用的脚本版本。

参考文献:

如果我误解了你的问题,我很抱歉。