到处寻找这个没有真正的运气。
我希望使用谷歌应用程序脚本将函数调用到另一个函数中。这两个函数都在当前项目中,当我这样做时,我调用的函数没有被拉过来,因为变量没有在两个函数之间进行链接
我希望调用的函数名为“getDates
”,其中包含变量“year
”。但是当我调用该函数时,脚本会调用'year
'它返回undefined。
这是getDates
功能:
function getDates {
var startDate = new Date(sheet.getRange("B1").getValue());
var year = startDate.getFullYear();}
我希望将此功能称为以下内容:
function one {
getDates();
var url = "https://(hidden url)" + year;
UrlFetchApp.fetch(url);
var dataAll = JSON.parse(response.getContentText()); //
var dataSet = dataAll;
var rows = [],
data;
for (i = 0; i < Object.keys(dataSet).length; i++) { data = dataSet[Object.keys(dataSet)[i]]; rows.push([data.XXX]); }
dataRange = sheet.getRange(7, 2, rows.length, 1);
dataRange.setValues(rows);
}
答案 0 :(得分:2)
Google Apps脚本和旧版本的JS通常使用功能范围,因此除非返回,否则其包含的环境无法访问函数中声明的任何值。
您的函数没有return语句,因此它隐式返回undefined。作为副作用,它声明了两个变量,然后在函数完成时垃圾收集它们。
您想在getDates()
函数return year;
中添加一行,并将其分配给one()
在函数终止后访问函数内变量的唯一方法是让函数(getDates()
)返回一个函数。然后,该函数将包含contains函数的环境,即使在该函数终止后也可以访问其变量。这称为closure,但在您的情况下不是很有用。