将Google Apps脚本项目切换到V8运行时时,范围出现问题

时间:2020-03-03 07:14:00

标签: google-apps-script v8 google-apps-script-api google-apps-script-runtime google-apps-script-project

由于Google Apps脚本强行将“ Rhino”推入“ V8”引擎,因此应用程序自动从Rhino移至V8。因此,我们的应用程序要求“ 范围”需要在“ appscript.json ”文件中手动指定。

请检查下图:

Application Issue

文件:-

Code.gs

当我进行如下更新时,它工作正常。

appsscript.json

我们担心的是,我们在生产中有100多个应用程序,我们不能每次都手动更新它。您能帮助我们如何在生产中毫无问题地进行更新吗?

1 个答案:

答案 0 :(得分:1)

使用表扣

您可以使用CLASP项目(它在后台使用Apps Script API)和Node.js中的实用程序脚本来批量更新清单文件,或者您可以选择使用毒药来控制工作流程。您需要采取的一般步骤是:

  1. 使用clasp clone "YourScriptIdHere"克隆项目

  1. 使用所需的范围更新appsscript.json文件。由于清单文件保存在项目的根目录下,因此我将执行以下操作(使用Node.js):
const { writeFile } = require("fs").promises;

const addScope = async (scopes) => {

  const pathToManifest = "appscript.json";

  const manifest = require(pathToManifest);

  const { oauthScopes = [] } = manifest;

  oauthScopes || ( manifest.oauthScopes = oauthScopes ); //guard against first scope

  oauthScopes.push(...scopes);

  await writeFile(pathToManifest, JSON.stringify(manifest));
}


  1. 使用clasp push将更新推送到项目中。由于您要更改清单,因此请使用--force选项,否则您将需要批准每次上传。请注意,截至2020年,该项目尚不支持部分更新,因此所有文件将被替换。使用.claspignore文件来确保您不会意外地推入整个node_modules文件夹或类似文件夹。

  1. 使用clasp deploy重新部署项目。该命令是可自定义的,因此不必担心会有多个部署。