使用 Google Apps 脚本,我尝试创建一个可在多个函数中使用的全局变量(例如数组),但我似乎无法在任何地方找到答案,我需要它才能使我的 Google 电子表格正常工作。
Code:
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
是一个全局变量scope,这意味着程序中的所有代码都可以访问它。不那么明显的是你的程序在不同的“机器”中运行多次,这就是为什么它可能会出现infoSheetArray
正在重置。
脚本的每次单独执行都是在一个新的执行实例中完成的,每个实例都有自己的一组“全局变量”。例如,在您的示例片段中,onOpen()
是在 Web 编辑器中打开电子表格时独立调用的自动触发函数。你还有另外两个功能,grabInfo()
and itemSetup()
(未显示)被调用独立地通过用户菜单扩展。
当这三个函数中的任何一个被独立调用时,都会为其创建一个执行实例,加载您的程序,然后开始执行。所有全局语句(例如var infoSheetArray = null;
)首先被评估,然后是专门触发的函数。对全局变量所做的任何更改都将仅在发生更改的执行实例中保留,并且仅在需要该实例时保留。一旦函数完成,实例就会消失。
如果需要在执行实例之间保留值,则需要使用某种存储方法,例如物业服务 or an 外部数据库.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)