Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何返回使用Google Sheets API spreadsheets.values.get读取的值?_Javascript_Node.js_Google Sheets Api - Fatal编程技术网

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

Javascript 如何返回使用Google Sheets API spreadsheets.values.get读取的值?,javascript,node.js,google-sheets-api,Javascript,Node.js,Google Sheets Api,我目前正在做一个项目,在这个项目中,我从谷歌表单中提取值。我可以console.log记录显示我可以访问值的结果。但是,当我尝试将其返回到较大的node.js脚本以在其他函数中进行处理时,当变量应该是字符串数组时,它仍然是未定义的 这是我正在努力解决的代码 function extractValsTest(auth) { const sheets = google.sheets({version: 'v4', auth}); var request = { spreadsheetId:

我目前正在做一个项目,在这个项目中,我从谷歌表单中提取值。我可以
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
的值,但是它没有定义,而
test1
控制台.log
输出我在测试中想要的值

我尝试了许多不同的方法来获取sheet函数外部的值,例如返回、重写函数中预先存在的变量,以及将值推送到预先存在的数组

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


任何帮助都将不胜感激。提前感谢。

好吧,这不是使用异步函数的正确方法。 函数
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)
outside不会等待
spreadsheets.values.get()
完成并返回结果。
因此,您必须在回调中添加与
spreadsheets.values.get()
返回值相关的所有内容。

。当I console.log测试时,它只返回一个空数组。但是,当我在get命令中打印测试时,需要几秒钟的时间,然后打印结果。@dropTableUsers很抱歉,时间太晚了,我写了一些愚蠢的东西。我编辑了这篇文章。不用担心,这是我们中最好的。你的建议对我很有帮助,使用了新的方法。谢谢你的帮助!