node.js - 如何从 Google Sheets API 访问回调函数的结果?
问题描述
我正在使用 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: apiKey
被删除,脚本也可以工作。
参考:
如果这不是你想要的结果,我很抱歉。
推荐阅读
- php - 如何从 MySQL 返回数据作为导航栏链接
- r - 字符变量未排序
- android - 如何从android中的firebase实时数据库中获取价值?
- python - 如何将每小时数据转换为半小时
- macos - 大写字母下录制的vim重复宏
- arrays - 黑客地球(基本 I/O 问题)玩数字 [ subarry ]
- multithreading - 如何从另一个线程发送到 Flutter 的 EventChannel?
- ios - 在 iOS 上的 KMM 项目中使用后台线程时出现无效的可变性异常
- mysql - 多行的 SQL 加权平均值 -
- python - “numpy.ndarray”对象没有属性“plot”