javascript - 在 Google Apps 脚本中定义可跨多个项目使用的全局变量

标签 javascript google-apps-script global-variables libraries

我有大约 15-20 个 Google Apps 脚本项目,它们都使用相同的全局变量列表。

我所做的是在项目的第一个脚本文件的顶部定义所有全局变量,然后将代码块复制并粘贴到每个项目的相同位置。因此,如果我对一个进行了更改,我会将整个内容从那个复制并粘贴到其余的。这很耗时。

有更好的方法吗?是否使用 Libraries ?有人使用库来跨项目定义全局变量吗?

最佳答案

使用共享常量库是在 Google Apps 脚本之间共享常量对象的最有效方式。一些注意事项:

  • 所有使用 ConstLib 的脚本都需要在“开发模式”打开的情况下执行此操作,否则您仍需要手动更新每个脚本。 (风险:保存有缺陷的 ConstLib 版本,您的所有脚本都会立即崩溃。)screenshot
  • 常量是库的属性,因此需要使用库名来引用,例如

    var log = SpreadsheetApp.openById( ConstLib.auditLogId );
    

    在您现有的脚本中,您可能会发现将现有常量 block 更改为对 ConstLib 的引用很方便,因此您无需触及其余代码。例如

    var auditLogId = ConstLib.auditLogId;
       . . .
    var log = SpreadsheetApp.openById( auditLogId );
    

例子

ConstLib

var roses = "Red", violets = "Blue";

使用 ConSTLib

function myFunction() {
  Logger.log(ConstLib.roses);
  Logger.log(ConstLib.violets);
}

记录输出

[14-10-09 14:51:47:258 EDT] Red
[14-10-09 14:51:47:259 EDT] Blue

关于javascript - 在 Google Apps 脚本中定义可跨多个项目使用的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267948/

相关文章:

javascript - 如何在 Javascript 中将 mac 地址转换为 long?

c# - 如何从控制台应用程序中访问 Properties 命名空间?

bash - 为什么这个自定义采购函数不能使我声明的变量全局可用?

javascript - 保护网络应用程序免受信息泄露

javascript - 为什么 d3 更新整个数据

javascript - 了解 useEffect() 行为和额外的重新渲染

java - 使用 jna 加载 lib.so

google-apps-script - 提示框,询问值,存储在单元格中。添加适应按钮

google-apps-script - iFrame 中的应用程序脚本 HTMLService 应用程序

javascript - 如何返回 false 而不是 "TypeError: Cannot read property"?