NodeJS访问谷歌电子表格



我编写了以下代码(index.js):

const { GoogleSpreadsheet } = require('google-spreadsheet')
const credentials = require('./credentials.json')
const { promisify } = require('util')
const docId = '1lrGt8C9gjrabhVjGYoFh-q40rLuRHz6u9vRZqVeLG-c'
const accessSheet = async() => {
const doc = new GoogleSpreadsheet(docId)
await promisify(doc.useServiceAccountAuth)(credentials)
const info = await promisify(doc.getInfo)()
const worksheet = info.worksheets[0]
const rows = await promisify(worksheet.getRows)({
})
rows.forEach(row => {
console.log(row.Title)
})
}
accessSheet()

我正试图连接我的代码与谷歌电子表格。对于连接,我使用node.js,但我得到这个错误消息。

C:Usersrodrigo.pasiniDesktoprobo_grprnode_modulesgoogle-spreadsheetlibGoogleSpreadsheet.js:101
this.jwtClient = new JWT({
^
TypeError: Cannot set properties of undefined (setting 'jwtClient')
at useServiceAccountAuth (C:Usersrodrigo.pasiniDesktoprobo_grprnode_modulesgoogle-spreadsheetlibGoogleSpreadsheet.js:101:20)
at node:internal/util:360:7
at new Promise (<anonymous>)
at useServiceAccountAuth (node:internal/util:346:12)
at accessSheet (C:Usersrodrigo.pasiniDesktoprobo_grprindex.js:9:47)
at Object.<anonymous> (C:Usersrodrigo.pasiniDesktoprobo_grprindex.js:19:1)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)

有人知道为什么我得到这个错误吗?我做错了什么?

当我看到你的显示脚本和你的错误消息时,我担心你正在使用的当前版本的谷歌电子表格可能与你的显示脚本不同。所以,在这个答案中,我想提出一个使用最新版本的google-spreadsheet从您的显示脚本转换的示例脚本。

当我检查谷歌电子表格的最新版本时,它似乎是3.2.0。所以,首先,请检查你正在使用的谷歌电子表格的版本。请安装最新版本。

当您的脚本被修改为使用最新版本(v3.2.0)时,它变成如下所示:

修改脚本:

const { GoogleSpreadsheet } = require("google-spreadsheet");
const creds = require('./credentials.json');
const doc = new GoogleSpreadsheet('###'); // Please set your Spreadsheet ID.
const accessSheet = async () => {
await doc.useServiceAccountAuth(creds);
await doc.loadInfo();
const worksheet = doc.sheetsByIndex[0];
const rows = await worksheet.getRows();
rows.forEach((row) => {
console.log(row.Title);
});
};
accessSheet();
参考:

  • node-google-spreadsheet

最新更新