谷歌应用程序脚本-全局变量值在多个函数中不可用



使用谷歌应用程序脚本我试图创建一个可以在多个函数中使用的全局变量(例如数组),但我似乎在任何地方都找不到答案,我需要它来让我的谷歌电子表格工作。

代码:

var infoSheetArray = null;
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Fetch Info', 'grabInfo')
      .addItem('Run Program', 'itemSetup')
      .addToUi();
}
function grabInfo() {
  var infoSheet = SpreadsheetApp.openByUrl('....');
  infoSheetArray = infoSheet.getSheetValues(1, 1, infoSheet.getLastRow(), 10);
}    

在您的代码中,infoSheetArray是一个具有全局作用域的变量,这意味着程序中的所有代码都可以访问它。不那么明显的是,你的程序运行了多次&在不同的"机器"中,这就是为什么infoSheetArray可能被重置的原因。

脚本的每次单独执行都在一个新的执行实例中完成,每个执行实例都有自己的一组"全局"。例如,在您的示例代码段中,onOpen()是在web编辑器中打开电子表格时独立调用的自动触发函数。您还有另外两个函数,grabInfo()itemSetup()(未显示),它们通过用户菜单扩展被独立调用。

当独立调用这三个函数中的任何一个时,都会为其创建一个执行实例,加载程序,然后开始执行。首先评估所有全局语句(例如var infoSheetArray = null;),然后评估特定触发的函数。对全局变量所做的任何更改都将仅在发生更改的执行实例中持续,并且仅在需要该实例时持续。一旦函数完成,实例就会被吹走。

如果需要在执行实例之间保持值,则需要使用一些存储方法,如属性服务或外部数据库。

相关内容

  • 没有找到相关文章

最新更新