Creé una clave en la consola de la nube de Google. Incluso intenté rehacerlo y usar uno nuevo.
Estoy tratando de usarlo así:
export const getSheet= async () => { try { const sheetId ='xxxxxxx' const tabName = 'myTab' const accountKey = 'xxxxxxx' const url =' https://sheets.googleapis.com/v4/spreadsheets/'+ sheetId +'/values/'+tabName+'?key='+ accountKey console.log(url) const response = await fetch(url); console.log(response); return ''; } catch (error) { console.log(error); } finally { console.log('finally'); } };
La solicitud que se envía es:
https://sheets.googleapis.com/v4/spreadsheets/xxxxxxx/values/myTab?key=xxxxxxx
No importa lo que haga, obtengo
error: {code: 403, message: "The caller does not have permission", status: "PERMISSION_DENIED"}
Me he referido a estas publicaciones de desbordamiento de pila con respecto al mismo problema sin suerte
¿Alguien se ha encontrado con esto y ha podido solucionarlo?
Gracias -Café
No puede usar una clave API para acceder a datos de usuario (Google Workplace), como hojas; puede (!?) Salirse con la suya usando solo una clave API si la hoja fuera pública (cualquiera con el enlace).
Las opciones son ciertamente confusas, pero:
Eche un vistazo a la autenticación y autorización y OAuth para aplicaciones web del lado del cliente .
Puede consultar la guía de inicio rápido de Javascript para Sheets API para la configuración de OAuth. Y puede acceder a la hoja utilizando el método Spreadsheet.values.get
similar a este script de muestra en la referencia de URL proporcionada.
async function listMajors() { let response; try { // Fetch first 10 files response = await gapi.client.sheets.spreadsheets.values.get({ spreadsheetId: 'SHEETID', range: 'SHEETRANGE', }); } catch (err) { document.getElementById('content').innerText = err.message; return; } const range = response.result; if (!range || !range.values || range.values.length == 0) { document.getElementById('content').innerText = 'No values found.'; return; }
Y al igual que lo que proporcionó DazWilkin. Asegúrese de que su aplicación cumpla con las políticas de OAuth2 de Google .
También puede probar su URL de solicitud primero en un navegador y ver si devuelve una respuesta JSON de los datos de la hoja. Probé este formato https://sheets.googleapis.com/v4/spreadsheets/xxxxxxx/values/myTab?key=xxxxxxx
en una hoja pública y devolvió los datos de la hoja siempre que esté configurado en "Cualquiera con el enlace".