我试图从下面的代码中传递名为'sheetsArray'的数组,以便我可以将它用于某些任务。我不能为我的生活弄清楚如何做到这一点,尽管尝试了很多东西,谷歌搜索了几个小时。我确信这很容易,但我甚至不确定我应该搜索的是什么,我不是。
var sheetsArrayOut = sheets.spreadsheets.get({
auth: googleauth,
spreadsheetId: outputDOCID,
}, function(err,response) {
if (err) {
console.log('ERROR:' + err);
return
}
var sheets = response.sheets;
if (sheets.length == 0) {
console.log('No data found.');
} else {
var sheetsArray = [];
for (i = 0; i < sheets.length; i++) {
sheetsArray.push(sheets[i].properties.title);
}
}
console.log(sheetsArray[4]); // this returns the sheet name
return sheetsArray;
});
console.log(sheetsArrayOut[4]); // this returns undefined
答案 0 :(得分:1)
=
中的第一个var = sheetsArrayOut = sheets.spreadsheets.get(...)
语法无效。
改为使用var sheetsArrayOut = sheets.spreadsheets.get(...)
。
答案 1 :(得分:1)
它返回undefined
,因为我怀疑该函数是异步的。在这种情况下,您可以使用回调效果良好:
function getData(function (sheetsArray) {
// do things with sheetsArray
});
function getData(callback) {
sheets.spreadsheets.get({
auth: googleauth,
spreadsheetId: outputDOCID,
}, function(err,response) {
// do a bunch of things
callback(sheetsArray);
});
}
答案 2 :(得分:0)
为什么不在请求结束时重新分配值
var sheetsArrayOut;
sheets.spreadsheets.get({
auth: googleauth,
spreadsheetId: outputDOCID,
}, function(err,response) {
//your functional code
sheetsArrayOut = sheetsArray;
});