返回阵列内部承诺正在返回未定义



我正在学习一些自动化脚本的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
};

希望这会有所帮助!

最新更新