tutorial sheets sheet google example google-api google-sheets google-sheets-api

google-api - example - python google sheets



La API de Google Sheets devuelve "La persona que llama no tiene permiso" cuando usa la clave del servidor (4)

Asegúrate de prestar atención al comentario de @ KishanPatel:

Además, puede compartir esta hoja con un correo electrónico específico, ej. tu cuenta de servicio (proyecto) email. "client_email": "[email protected]", Esto le permitirá acceder a la hoja desde su script.

Generé una clave de servidor en el Administrador de API e intenté ejecutar lo siguiente en mi Mac:

curl ''https://sheets.googleapis.com/v4/spreadsheets/MySheetID?ranges=A1:B5&key=TheServerKeyIGeneratedInAPIManager''

Pero esto es lo que devuelve:

{ "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } }

¿Qué estoy haciendo mal aquí?


La forma más fácil es arreglarlo usando gcloud cli. Más documentos aquí https://cloud.google.com/pubsub/docs/quickstart-cli#before-you-begin

Cuando pueda utilizar esta herramienta, llame al

gcloud init

entonces revisa tu proyecto activo y credenciales

gcloud config configurations list

Si no está bien, asegúrese de estar autenticado con la cuenta correcta:

gcloud auth list * account 1 account 2

Cambie a la cuenta del proyecto si no:

gcloud config set account `ACCOUNT`

Dependiendo de la cuenta, la lista de proyectos será diferente:

gcloud projects list - project 1 - project 2...

Cambiar al proyecto previsto:

gcloud config set project `PROJECT NAME`

A continuación, gcloud auth application-default login credenciales predeterminadas de la gcloud auth application-default login y, a continuación, google-cloud detectará automáticamente dichas credenciales.


Para resolver este problema, intente:

  1. cree una cuenta de servicio: https://console.developers.google.com/iam-admin/serviceaccounts/
  2. en opciones, cree una clave: esta clave es su cliente habitual_secret.json - úsela de la misma manera
  3. agregar permiso de propietario a esta cuenta de servicio (nombre de miembro = ID de cuenta de servicio = correo electrónico de la cuenta de servicio ej: [email protected]
  4. Copie la dirección de correo electrónico de su cuenta de servicio = ID de cuenta de servicio
  5. simplemente vaya en su navegador a la hoja de Google con la que desea interactuar
  6. Ve a COMPARTIR en la parte superior derecha de tu pantalla
  7. vaya a la configuración avanzada y compártala con la dirección de correo electrónico de su cuenta de servicio, por ejemplo, [email protected]

Funciono para mi :)


Sé que es un poco tarde para responder, pero para otras personas que luchan con el mismo problema.
Simplemente cambie el permiso de la hoja a público en su disco para que pueda acceder a él sin autenticación a través de llamadas API.

Para cambiar el acceso:

  1. Abrir hoja en google drive
  2. En la esquina superior derecha, haga clic en compartir
  3. En la parte inferior de la ventana de solicitud, haga clic en Avanzado
  4. Cambiar el permiso a público o personas con enlace (no se requiere inicio de sesión)

Enviar solicitud de API para recuperar datos de hojas sin autenticación.

Nota: si la hoja contiene datos confidenciales, no es seguro hacerlo público y, más bien, hacerlo con acceso autenticado.