Tengo una hoja de cálculo privada de Google y estoy tratando de acceder a ella mediante programación usando Google Visualization/Google Charts. Creé la cuenta de servicio e intenté usar los paquetes google-auth-library y googleapis npm para crear un token de acceso que luego puedo usar para acceder a la hoja de cálculo. Pero, cuando trato de usar ese token de acceso para leer de la hoja de cálculo, la solicitud falla con el código HTTP 401 (no autorizado). ¿Qué debo hacer para que esto funcione?
Este es mi código:
const { auth } = require('google-auth-library'); const keys = require('./jwt.keys.json'); const id = '{Spreadsheet ID}'; const sheetId = '{Sheet ID}'; const query = "{Query}"; async function getClient(){ const client = auth.fromJSON(keys); client.scopes = ['https://www.googleapis.com/auth/spreadsheets.readonly']; console.log(client); return client; } async function main(){ const client = await getClient(); const token = await client.getAccessToken(); console.log(token); console.log(token.token); const url = `https://docs.google.com/spreadsheets/d/${id}/gviz/tq?tqx=out:csv&tq=${encodeURIComponent(query)}&access_token=${token.token}#gid=${sheetId}`; const res = await client.request({url}); console.log(res); } main().catch(console.error);Cuando vi su secuencia de comandos, pensé que se requiere modificar el alcance. Tuve la misma situación que usted (el código de estado 401 usando su punto final). Desafortunadamente, parece que su punto final no se puede usar con el alcance de https://www.googleapis.com/auth/spreadsheets.readonly . Entonces, por ejemplo, ¿qué tal cambiarlo de la siguiente manera y probarlo nuevamente?
https://www.googleapis.com/auth/spreadsheets.readonly https://www.googleapis.com/auth/spreadsheetso
https://www.googleapis.com/auth/drive.readonly