如何传回数组

时间:2017-12-22 22:46:57

标签: javascript node.js google-sheets-api

我试图从下面的代码中传递名为'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

3 个答案:

答案 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;
});