0

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

我不想直接推送到“生产脚本”而不先使用我构建的虚拟表以及我的虚拟日历和虚拟电子邮件测试代码。这意味着我首先要将代码推送到我的“虚拟脚本”,对其进行测试,然后在准备好后,将代码推送到“生产工作表”。

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

4

1 回答 1

0

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

Clasp 总是推送到文件中由脚本 id 标识的脚本.clasp.json如何找到项目的脚本 id)。该文件通常只包含一个键/值对:

{
    "scriptId": "abcdefghijklmnopqrstuvwxyz12345678910",
}

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

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

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

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

于 2022-01-11T16:59:34.597 回答