javascript - 遵循 github 示例时,google-spreadsheet.js (npm) 不起作用
问题描述
当遵循https://github.com/theoephraim/node-google-spreadsheet中的基本示例代码时,它不起作用。
例如:
const { GoogleSpreadsheet } = require('google-spreadsheet')
const creds = require('./gsheet-creds.json')
const doc = new GoogleSpreadsheet('1nkNX-HfxYY5qs_MwXTiFQIxEajibJlTTUPeOHCX7ZVc')
doc.useServiceAccountAuth({
client_email: creds.client_email,
private_key: creds.private_key,
})
await doc.loadInfo()
console.log(doc.title)
它显示错误:
sz@air:/mnt/d/coding/wxBot-dorm-seller/googlesheet$ node gsheet-google-spreadsheet.js
/mnt/d/coding/wxBot-dorm-seller/googlesheet/gsheet-google-spreadsheet.js:34
await doc.loadInfo()
^^^^^
SyntaxError: await is only valid in async function
at wrapSafe (internal/modules/cjs/loader.js:1053:16)
at Module._compile (internal/modules/cjs/loader.js:1101:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
如果在 doc.loadInfo() 之前删除 'await',则会显示错误:
sz@air:/mnt/d/coding/wxBot-dorm-seller/googlesheet$ node gsheet-google-spreadsheet.js
gsheet@gsheet-yiouyou.iam.gserviceaccount.com
/mnt/d/coding/wxBot-dorm-seller/googlesheet/node_modules/_google-spreadsheet@3.0.13@google-spreadsheet/lib/GoogleSpreadsheet.js:175
if (!this._rawProperties) throw new Error('You must call `sheet.loadInfo()` before accessing this property');
^
Error: You must call `sheet.loadInfo()` before accessing this property
at GoogleSpreadsheet._ensureInfoLoaded (/mnt/d/coding/wxBot-dorm-seller/googlesheet/node_modules/_google-spreadsheet@3.0.13@google-spreadsheet/lib/GoogleSpreadsheet.js:175:37)
at GoogleSpreadsheet._getProp (/mnt/d/coding/wxBot-dorm-seller/googlesheet/node_modules/_google-spreadsheet@3.0.13@google-spreadsheet/lib/GoogleSpreadsheet.js:192:10)
at GoogleSpreadsheet.get title [as title] (/mnt/d/coding/wxBot-dorm-seller/googlesheet/node_modules/_google-spreadsheet@3.0.13@google-spreadsheet/lib/GoogleSpreadsheet.js:199:29)
at Object.<anonymous> (/mnt/d/coding/wxBot-dorm-seller/googlesheet/gsheet-google-spreadsheet.js:35:17)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
我已经尝试了很多东西,并从网站和 youtube 中检查了许多示例。他们都没有为最新的谷歌电子表格工作。我没有尝试任何更旧的东西。
感谢这里的任何帮助。真的想让 google-spreadsheet.js 工作。
解决方案
将最后两行放在异步函数中。我认为这会对你有所帮助。
例如:
const loadDoc = async (creds) => {
await doc.loadInfo();
let sheet = doc.sheetsByIndex[0];
console.log(sheet.title);
};
loadDoc(creds);
推荐阅读
- firefox - 无法在 Firefox 最新版本 68 中打开 Allure 报告
- android - 如何从android设备中获取最近播放的视频?
- angular - 无法在 Angular 中使用视频 url 动态更新 Vimeo 播放器
- spring-boot - 应用程序启动时如何从慰藉队列中自动读取/接收消息?
- angular - azure devops 中的 Angular 项目 CI 给出错误“发布构建工件失败并出现错误:”
- google-app-maker - 如何根据时间为表格中的一行着色?
- ios - 如何同时使用 AKMixer 和 AKPlayer 和 AKMetronome?
- python - 如何绘制条件数组(r < 1.5 * rs)?
- c - 有没有办法从一个项目中获得两个二进制文件?
- sql - distinct and sum if like