Alcances de autorización para complementos de Editores

Los usuarios deben autorizar complementos y otras aplicaciones que accedan a sus datos o actúen en su nombre. Cuando un usuario ejecuta un complemento por primera vez, la IU del complemento presenta un mensaje de autorización para iniciar el flujo correspondiente.

Durante este flujo, el mensaje le indica al usuario qué desea hacer la aplicación. Por ejemplo, es posible que un complemento requiera permiso para leer el mensaje de correo electrónico de un usuario o crear eventos en su calendario. El proyecto de la secuencia de comandos del complemento define estos permisos individuales como permisos de OAuth.

Debes declarar los alcances en el manifiesto con strings de URL. Durante el flujo de autorización, Apps Script le presenta al usuario una descripción legible del alcance del alcance. Por ejemplo, tu complemento podría usar el alcance "Leer documento actual", que está escrito en tu manifiesto como https://www.googleapis.com/auth/documents.currentonly. Durante el flujo de autorización, un complemento con este alcance le pide al usuario que permita el complemento para lo siguiente: Ver y administrar los documentos en los que se instaló esta aplicación.

Visualiza los alcances

Para ver los alcances que requiere tu proyecto de secuencia de comandos actualmente, haz lo siguiente:

  1. Abre el proyecto de la secuencia de comandos.
  2. A la izquierda, haz clic en Descripción general .
  3. Consulta los permisos en "Alcances de OAuth del proyecto".

También puedes ver los permisos actuales del proyecto de la secuencia de comandos en el manifiesto del proyecto, en el campo oauthScopes, pero solo si estableciste esos alcances de forma explícita.

Configura permisos explícitos

Apps Script determina automáticamente qué permisos necesita una secuencia de comandos mediante el análisis de su código para las llamadas a funciones que los requieren. Para la mayoría de las secuencias de comandos, esto es suficiente y te ahorra tiempo, pero, para los complementos publicados, debes ejercer un control más directo de los alcances.

Por ejemplo, Apps Script podría darle a un proyecto de secuencia de comandos de complemento el alcance muy permisivo https://mail.google.com de forma predeterminada. Cuando un usuario autoriza un proyecto de secuencia de comandos con este alcance, se le otorga acceso completo a la cuenta de Gmail del usuario. Para los complementos publicados, debes reemplazar este alcance por un conjunto más limitado que cubra las necesidades de los complementos y nada más.

Para configurar de forma explícita los alcances que usa tu proyecto de secuencia de comandos, edita el archivo de manifiesto. El campo de manifiesto oauthScopes es un array de todos los alcances que usa el complemento. Para configurar los alcances de tu proyecto, haz lo siguiente:

  1. Consulta los permisos que usa actualmente tu complemento. Determina qué cambios deben realizarse, por ejemplo, usar un alcance más limitado.
  2. Abre el archivo de manifiesto de tu complemento.
  3. Ubica el campo de nivel superior etiquetado como oauthScopes. Si no está presente, puedes agregarla.
  4. El campo oauthScopes especifica un array de strings. Para establecer los alcances que usa tu proyecto, reemplaza el contenido de este arreglo por los alcances que deseas que use. Por ejemplo, para un complemento de editor que extiende Hojas de cálculo, puedes tener lo siguiente:

    {
      ...
      "oauthScopes": [
        "https://www.googleapis.com/auth/script.container.ui",
        "https://www.googleapis.com/auth/spreadsheets.currentonly"
      ],
      ...
    }
    

  5. Guarda los cambios del archivo de manifiesto.

Verificación de OAuth

El uso de ciertos alcances sensibles de OAuth puede requerir que tu complemento se someta a la verificación del cliente de OAuth antes de que puedas publicarlo. Si deseas obtener más información, consulta las siguientes guías:

Permisos restringidos

Algunos permisos están restringidos y sujetos a reglas adicionales que ayudan a proteger los datos del usuario. Si quieres publicar un complemento de Gmail o de Editor que usa uno o más permisos restringidos, el complemento debe cumplir con todas las restricciones especificadas antes de poder publicarlo.

Revisa la lista completa de permisos restringidos antes de intentar realizar la publicación. Si tu complemento usa alguno de ellos, debes cumplir con los Requisitos adicionales para permisos de API específicos antes de publicarlo.

Alcances del complemento del editor

Cuando compilas un complemento de editor, el servicio y los métodos de Apps Script que usa el código del complemento determinan los permisos necesarios. Por ejemplo, es posible que un complemento de Hojas de cálculo necesite el alcance https://www.googleapis.com/auth/spreadsheets.readonly para leer información de diferentes Hojas de cálculo de Google.

Apps Script determina automáticamente los permisos que requieren los servicios que usas a medida que agregas código a tu proyecto de secuencia de comandos. Para los complementos de Editor, a menudo puedes confiar en esta recopilación de alcance automático en lugar de determinar los permisos tú mismo y configurarlos de manera explícita.

Si no configuras los alcances de forma explícita y tu complemento de editor solo realiza operaciones de lectura o escritura en el archivo abierto del editor, agrega el siguiente comentario a uno de los archivos del proyecto de secuencia de comandos:

  /**
   * @OnlyCurrentDoc
   */

Este comentario le indica a Apps Script que reduzca los permisos del archivo del editor que establece a currentonly. Por ejemplo, si agregas este comentario a un archivo de proyecto de secuencia de comandos del complemento de Hojas de cálculo de Google, estarás especificando que el complemento solo necesita permiso para operar en la hoja de cálculo abierta actualmente y no en otras Hojas de cálculo que el usuario pueda tener en Google Drive. Por el contrario, no debes usar este comentario si tu complemento de Hojas de cálculo necesita leer o escribir datos en una hoja que el usuario no ha abierto en el momento.