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

时间:2019-01-16 03:34:47

标签: google-apps-script triggers google-apps-script-addon

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

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

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

2 个答案:

答案 0 :(得分:2)

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

我理解您的上述问题。如果我的理解是正确的,那么这个答案呢?请认为这是几个答案之一。

第一季度的答案:

  • 通过ScriptApp.newTrigger()安装触发器时,尽管“当前项目的触发器”中未显示“部署”的值,但最新脚本由已安装的触发器运行。这种情况与脚本的版本无关。使用当前最新的脚本。

  • 如果手动安装了触发器,则可以在“选择应运行的部署”中选择部署版本。

    • 不幸的是,在当前阶段,脚本尚无法实现。我认为这可能会在将来的更新中实现。

第二季度的答案:

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

  1. 创建2个独立项目。
    • 一个用作库。
    • 另一个用作使用该库的项目。
  2. 例如,在要使用该库的项目中,放置了function myFunction() {lib.myFunction()}。该脚本运行库的功能。
    • 将库安装到该项目。
    • 您可以通过选择库的版本来选择要使用户运行的脚本。
    • 触发器已安装到该项目。
  3. 图书馆的项目是要开发的项目。它通过脚本编辑器的“管理版本”来管理开发脚本的版本。
  4. 安装触发器后,它将在项目中运行ScriptApp.newTrigger("myFunction")以使用该库。这时,运行触发器时,将使用选定的库版本。这样,就不会使用库的最新脚本。用户可以使用所选版本的稳​​定脚本。
注意:
  • 您还可以在清单文件(appsscript.json)中查看库的版本。可以通过脚本修改此文件。这样,您还可以通过脚本触发器使用脚本来修改脚本的版本。

参考文献:

如果我误解了你的问题,对不起。

答案 1 :(得分:1)

是的,它始终指向“头”,因为版本化的部署仅适用于Gmail加载项。

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