Node.js 如何从GoogleSheetsAPI访问回调函数的结果?

Node.js 如何从GoogleSheetsAPI访问回调函数的结果?,node.js,asynchronous,google-api,google-sheets-api,Node.js,Asynchronous,Google Api,Google Sheets Api,我正在使用GoogleSheetsAPI复制一个工作表,我想将新工作表的ID传递到一个变量中 我可以在回调函数中成功地获取工作表ID(使用result.data.sheetId),但我很难在函数之外使用它 我使用的是async/await语法,我还尝试了utils.promisify,运气不好 async function copySheet(jwt, apiKey, spreadsheetId, range) { const sheets = google.sheets({ versio

我正在使用GoogleSheetsAPI复制一个工作表,我想将新工作表的ID传递到一个变量中

我可以在回调函数中成功地获取工作表ID(使用
result.data.sheetId
),但我很难在函数之外使用它

我使用的是
async
/
await
语法,我还尝试了
utils.promisify
,运气不好

async function copySheet(jwt, apiKey, spreadsheetId, range) {

  const sheets = google.sheets({ version: 'v4' });

  let newSheetId = await sheets.spreadsheets.sheets.copyTo({
    "spreadsheetId": spreadsheetId,
    "sheetId": 0,
    "auth": jwt,
    "key": apiKey,
    "resource": {
      "destinationSpreadsheetId": spreadsheetId,
    }
  }, function (err, result) {
    if (err) {
      throw err;
    }
    console.log(result.data.sheetId);
    return result.data.sheetId;
  });

  console.log(newSheetId);

}
第一个
console.log
显示我想要的号码,但第二个日志
未定义


您有什么建议允许我在回调函数之外使用sheetId吗?

这个修改怎么样?请把这看作是几个答案中的一个

修改脚本: 请按如下方式修改您的脚本

发件人: 致: 注:
  • 根据您的问题,我可以确认您已经能够使用API
  • spreadsheets.sheets.copyTo()
    使用POST方法。所以在这种情况下,不能使用API密钥。我认为即使删除了
    key:apiKey
    ,脚本也能正常工作
参考:
如果这不是你想要的结果,我道歉

let newSheetId = await sheets.spreadsheets.sheets.copyTo({
  "spreadsheetId": spreadsheetId,
  "sheetId": 0,
  "auth": jwt,
  "key": apiKey,
  "resource": {
    "destinationSpreadsheetId": spreadsheetId,
  }
}, function (err, result) {
  if (err) {
    throw err;
  }
  console.log(result.data.sheetId);
  return result.data.sheetId;
});

console.log(newSheetId);
let res = await sheets.spreadsheets.sheets.copyTo({
  "spreadsheetId": spreadsheetId,
  "sheetId": 0,
  "auth": jwt,
  "key": apiKey,
  "resource": {
    "destinationSpreadsheetId": spreadsheetId,
  }
});

let newSheetId = res.data.sheetId;
console.log(newSheetId);