我正在学习一些自动化脚本的nodejs,但是我有一个我不知道如何解决的问题。
使用Google电子表格API和" Promisify-node"软件包,我请求电子表格中的一些数据,并尝试返回一部分数据要在另一个JS文件上使用。
文件:电子表格
const getProductsConfiguration = async(auth) =>
{
const sheets = google.sheets('v4');
const getValues = promisify(sheets.spreadsheets.values.get);
await getValues({
auth: auth,
spreadsheetId: utils.getSpreadsheedId(config.spreadsheet.configSpreadsheedUrl),
range: `${config.spreadsheet.configTabName}!A8:C1000`,
})
.then(function (response) {
var productsConfiguration = [];
for(var value in response.values)
{
if(response.values[value].length === 0) continue;
var productConfig = {
"productName": response.values[value][0],
"spreadsheetId": response.values[value][1],
"filterId": response.values[value][2]
};
productsConfiguration.push(productConfig);
}
console.log(productsConfiguration);
return productsConfiguration;
})
.catch(function (error){console.log(error); return false;});
};
app.js:
productsConfig = await spreadsheet.getProductsConfiguration(sheetAuth);
console.log(productsConfig);
此控制台.log正在返回"未定义",但是" spreadsheet.js"内部的console.log正在返回正确的数据。
我该怎么办?谢谢
您只需做const values = await getValues({...})
。
const getProductsConfiguration = async(auth) => {
const sheets = google.sheets('v4');
const getValues = promisify(sheets.spreadsheets.values.get);
let values
try{
values = await getValues({
auth: auth,
spreadsheetId: utils.getSpreadsheedId(config.spreadsheet.configSpreadsheedUrl),
range: `${config.spreadsheet.configTabName}!A8:C1000`,
})
}catch(e){
console.log(error)
}
var productsConfiguration = [];
if(values){
for(var value in values) {
if(values[value].length === 0) continue;
var productConfig = {
"productName": values[value][0],
"spreadsheetId": values[value][1],
"filterId": values[value][2]
};
productsConfiguration.push(productConfig);
}
}
console.log(productsConfiguration);
return productsConfiguration
};
希望这会有所帮助!