我目前正在从事一个从 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.log
的test1
输出我想要在测试中的值。
我尝试了很多不同的方法来获取工作表函数之外的值,例如返回、覆盖函数中预先存在的变量,以及将值推送到预先存在的数组中。
我愿意使用另一个 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/