javascript - 如何返回使用 Google Sheets API spreadsheets.values.get 读取的值?

标签 javascript node.js google-sheets-api

我目前正在从事一个从 Google 表格中提取值的项目。我能够 console.log 结果表明我可以访问这些值。但是,当我尝试将它返回到更大的 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的值,但是它是undefined,而console.logtest1 输出我想要在测试中的值。

我尝试了很多不同的方法来获取工作表函数之外的值,例如返回、覆盖函数中预先存在的变量,以及将值推送到预先存在的数组中。

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

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

最佳答案

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

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() 完成并返回结果。 因此,您必须在回调中添加与 spreadsheets.values.get() 的返回值相关的所有内容。

关于javascript - 如何返回使用 Google Sheets API spreadsheets.values.get 读取的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50457709/

相关文章:

javascript - 是否有 'angular.element($0).scope()' 的 Angular 2 等价物

javascript - jQuery:使用 URL 哈希/片段标识符显示/隐藏项目

javascript - 如何对姓氏进行排序、设置电话号码格式以及返回包含对象数组中的值的字符串?

javascript - 嵌套 AngularJS 模态

node.js - 浏览器未设置 CORS cookie,响应中存在 cookie

node.js - npm install 的 --save 选项是什么?

python - 如何同步Google电子表格中的计算机本地数据?

node.js - Node.js 中的子进程在同步代码行之间神秘退出

java - PDI "Google Spreadsheet Input/Output"插件与 Google Sheets API v4 兼容吗?

dart - 用于 Flutter/Dart 的 Google Sheets API v4