如何使用 Google Sheets API spreadsheets.values.get 读取 return 值?

How to return values read using Google Sheets API spreadsheets.values.get?

我目前正在从事一个项目,我从 Google Sheet 中提取值。我能够 console.log 结果表明我可以访问这些值。但是,当我尝试将它 return 到更大的 node.js 脚本以在其他函数中进行处理时,该变量仍然未定义,而它应该是一个字符串数组。

这是我正在努力处理的代码。

function extractValsTest(auth) {
const sheets = google.sheets({version: 'v4', auth});
var request = {
    spreadsheetId: //id,
    range: 'A1:B1'
}
var test = new Array();
test = sheets.spreadsheets.values.get(request, function(err, response){
    if (err) return err;
    test1 = String(response.data.values).split(',');
    console.log(test1);
    return test1;
});
console.log('Test = ' + test);}

显然,test的值应该是test1的值,但它是未定义的,而test1console.log输出的值是我想要在测试中。

我尝试了很多不同的方法来获取 sheet 函数之外的值,例如 returning,覆盖函数中预先存在的变量,并将值推送到一个预先存在的数组。

我愿意使用另一个 http 客户端,但我无法计算出所需的授权。在其他 http 客户端中完成的 Google 项目的任何链接也会有所帮助。

如有任何帮助,我们将不胜感激。提前致谢。

嗯,这不是使用异步函数的正确方法。 函数 spreadsheets.values.get() 不直接 return 一个值,而是使用 returned 值调用回调函数。 所以,你应该这样做:

sheets.spreadsheets.values.get(request, function(err, response) {
  var test = String(response.data.values).split(',');
  console.log(test);

  // Work with the "response" variable inside this callback
}

因为它是一个异步函数,如果你在外面打印你在回调内部计算的东西,它就不会工作,因为外面的 console.log(test) 不会等待 spreadsheets.values.get() 完成并且 return 结果。 因此,您必须在回调中添加与 spreadsheets.values.get() 的 returned 值相关的所有内容。