每次部署的应用程序脚本 Web 更改版本

Nir*_*Nir 3 google-apps-script

我为我的 google sheet 脚本创建了一个 web 应用程序。我用版本 1 部署它并且它工作正常

现在我想进行持续更改并部署我的更改,我是否需要为我部署的每个更改增加版本?或者我可以更新当前版本吗?

另外,有没有办法以编程方式获取当前版本?

Tan*_*ike 5

对于您的情况,我想介绍一下,因为我有一个我也使用的解决方法。

对于问题 1:

一般来说,Web Apps 的脚本更新时,需要增加项目版本,并重新部署Web Apps 到新版本。

但是如果你想在不增加版本的情况下部署Web Apps,作为一种变通方法,你可以通过使用一个库来实现。此变通方法的流程如下。

  1. 创建 2 个项目。
    • 一个是部署Web Apps的项目。
      • 它假设这是您现在正在使用的项目。
    • 另一个项目用作库。请将其创建为独立项目。
      • 请创建一个版本。
        • 在脚本编辑器上
          • 文件 -> 管理版本...
          • 输入说明后,请点击“保存新版本”。
      • 请复制此脚本 ID。这用于安装库。
  2. 对于部署了 Web Apps 的项目。
    • 请将库项目安装为库。
      • 在脚本编辑器上
        • 资源 -> 图书馆...
        • 对于“添加库”,请输入库项目的文件 ID。
        • 打开“开发模式”。
        • 将版本设置为保存的版本。
        • 在此示例中,请将“标识符”设置为“lib”。
    • 请复制并粘贴以下函数。在这个项目中,脚本只有这个。并请在复制粘贴后保存项目。
      • function doGet(e) {return lib.main(e)}
    • 请将 Web 应用程序部署为新版本。
    • 此设置后,您无需修改​​此项目。
  3. 对于用作库的项目。
    • 请复制并粘贴以下函数。
      • function main(e) {return yourfunction(e)}
      • yourfunction(e) 是您正在使用的项目中的功能。

在此解决方法中,当您要修改脚本时,请修改库项目。这样,当库更新时,部署 Web Apps 的项目会自动更新,因为在安装库时打开了“开发模式”。此更新也反映到 Web Apps。所以Web Apps的脚本可以在不增加版本的情况下进行更新。

作为示例,进行上述设置后两个项目的脚本如下:

对于部署了 Web Apps 的项目。

function doGet(e) {
  return lib.main(e);
}
Run Code Online (Sandbox Code Playgroud)

对于用作库的项目。

function main(e) {
  return yourfunction(e);
}

function yourfunction(e) {

   do something: The script which is run when users accessed to Web Apps.

  return something
}
Run Code Online (Sandbox Code Playgroud)

对于问题 2:

为了检索项目的当前版本,您可以使用 Apps Script API。tehhowch也回答了这个问题。在最近的更新中,用户必须能够检索和创建项目版本。通过使用它,您可以实现这一目标。所需的范围是https://www.googleapis.com/auth/script.projectsor https://www.googleapis.com/auth/script.projects.readonly

检索版本列表的端点如下。
GET https://script.googleapis.com/v1/projects/### scriptId ###/versions
Run Code Online (Sandbox Code Playgroud) 如果要使用脚本创建新版本,可以使用以下端点。
POST https://script.googleapis.com/v1/projects/### scriptId ###/versions
Run Code Online (Sandbox Code Playgroud)

请求正文是

{
 "versionNumber": 3,
 "description": "sample description"
}
Run Code Online (Sandbox Code Playgroud)

参考 :

如果这对你没有用,我很抱歉。