有没有办法使用 clasp 将代码绑定到多个 GAS 进行测试?

Is there a way to tie code to multiple GAS using clasp for testing?

我编写了很多 google 脚本,这些脚本与不同人的 google sheet 相关。最近我一直在尝试转向使用 Clasp 和 VS Code,以便更轻松地保留历史记录并添加到 Github。这很棒,因为它有助于简化我的流程,但是,我工作的大部分 GAS 都与用于其他人业务的 sheet 相关联,这意味着如果我推送有错误的代码,我可能会搞砸他们的业务。

我不想在不先使用我与虚拟日历和虚拟电子邮件一起构建的虚拟 sheet 测试代码的情况下直接推送到“生产脚本”。这意味着我首先要将代码推送到我的“虚拟脚本”,对其进行测试,然后在准备就绪后将代码推送到“生产 sheet.

有办法吗?我看过了,但似乎没有人有与我自己类似的需求,因为大多数人使用 clasp 来推送脚本,然后在测试后部署它们。我的需求不同,因为当我推送代码时,它会立即生效并且不会部署。对此问题的任何帮助将不胜感激。

这需要在推送之前进行一些手动操作,但至少可以让您维护一个代码副本的一种方法如下:

Clasp 始终推送到由文件 .clasp.json (how to find a project's script id) 中的脚本 ID 标识的脚本。该文件通常只包含一个 key/value 对:

{
    "scriptId": "abcdefghijklmnopqrstuvwxyz12345678910",
}

通过实验,我发现可以包含额外的 key/value 对,并且 clasp 会忽略它们。它只推送到由 scriptId 标识的脚本。因此,我在 .clasp.json 中保留了我可能想要推送的所有项目的列表,如下所示:

{
    "scriptId": "abcdefghijklmnopqrstuvwxyz12345678910",
    "production": "987654321zxywvutrsqpomnlkjifghedcba",
    "development": "abcdefghijklmnopqrstuvwxyz12345678910"
}

如当前所示,clasp push 将推送到开发副本。如果要推送到生产环境,请将生产 ID 值复制并粘贴到顶部 scriptId 行,然后是 clasp push.

它不是完全自动的,但至少它将所有脚本 ID 保存在一个地方。您还可以编写一个简短的命令行脚本,自动执行 copy/paste 操作并推送到所需的分支。

您可以通过使用 https://www.npmjs.com/package/multi-clasp2 创建一个本地 NodeJS 项目轻松地做到这一点 后台使用Clasp自动推送代码到GAS项目,只有一个配置文件。