【发布时间】:2014-12-08 17:51:22
【问题描述】:
我正在为 Google 电子表格编写一个脚本,我想让我的标题索引在整个脚本中全局可用。
According to the theory,我应该可以在函数中定义全局变量。
function testFunc() {
testVar = 1; // `testVar` is a Global variable now
}
在我的代码中,它或多或少是这样的:
function getHeaders() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var headers = data[0]
headerIdIndex = headers.indexOf("ID")
headerNameIndex = headers.indexOf("First-Last")
}
但是,稍后在我的代码中,当我调用变量 headerNameIndex 时,它显示为未定义:
function tellMeNames() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
Logger.log("Name: " + data[i][headerNameIndex])
}
}
那我做错了什么?谢谢。
【问题讨论】:
-
你确定
getHeaders()是在tellMeNames()之前被调用的吗?如果不是,则变量设置不正确。 -
是的,因为我从 Google 脚本编辑器的菜单中运行该函数,首先运行
getHeaders(),然后运行 tellMeNames()。最后,我希望getHeaders()被onOpen()调用,并且在整个脚本中都可以使用全局变量。 -
请参阅this question 和this question 了解可能的解决方案。关键问题似乎是每次您从 Google 脚本编辑器的菜单中调用一个函数时,都会创建一个新的全局上下文。因此,您不能从第二个上下文引用第一个上下文中的全局集。
标签: google-apps-script google-sheets