I made this code (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()
I’m trying to connect my code with a google spreadsheet. For the connection, I’m using node.js, but I’m getting this error message.
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)
Does anyone know why I’m getting this error? What am I doing wrong?
Advertisement
Answer
When I saw your showing script and your error message, I’m worried that the current version of google-spreadsheet you are using might be different from your showing script. So, in this answer, I would like to propose a sample script converted from your showing script using the latest version of google-spreadsheet.
When I check the latest version of google-spreadsheet, it seems that it’s 3.2.0. So, first, please check the version of google-spreadsheet you are using. And, please install the latest one.
When your script is modified for using with the latest one (v3.2.0), it becomes as follows.
Modified script:
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();