我正在使用 Google Sheets API 复制工作表,并且希望将新工作表的 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
显示我想要的数字,但第二个记录 undefined
。
您有什么建议允许我在回调函数之外使用sheetId吗?
最佳答案
这个修改怎么样?请将此视为多个答案之一。
修改后的脚本:
请按如下方式修改您的脚本。
来自:
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);
注意:
- 根据您的问题,我可以确认您已经能够使用 Sheets API。
spreadsheets.sheets.copyTo()
使用 POST 方法。所以在这种情况下,API key 不能使用。我认为即使删除了key: apiKey
,脚本仍然可以工作。
引用:
如果这不是您想要的结果,我深表歉意。
关于node.js - 如何从 Google Sheets API 访问回调函数的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56324768/