Compila un complemento de Google Workspace con Node.js

Crea un complemento de Google Workspace en Cloud Functions con el entorno de ejecución de Node.js.

Objetivos

  • Configura el entorno.
  • Crea e implementa una Cloud Function.
  • Crea y, luego, implementa el complemento.
  • Instala el complemento.

Requisitos previos

Configura tu entorno

Abre tu proyecto de Cloud en la consola de Google Cloud

  1. En la consola de Google Cloud, ve a la página Seleccionar un proyecto.

    Selecciona un proyecto de Cloud

  2. Selecciona el proyecto de Google Cloud que deseas usar. También puedes hacer clic en Create project y seguir las instrucciones en pantalla. Si creas un proyecto de Google Cloud, es posible que debas activar la facturación del proyecto.

Cómo configurar la pantalla de consentimiento de OAuth

Los complementos de Google Workspace requieren la configuración de una pantalla de consentimiento. Configurar la pantalla de consentimiento de OAuth de tu complemento define lo que Google muestra a los usuarios.

  1. En la consola de Google Cloud, ve a Menú > > Desarrollo de la marca.

    Ve a Desarrollo de la marca

  2. Si ya configuraste el , puedes configurar la siguiente configuración de la pantalla de consentimiento de OAuth en Desarrollo de la marca, Público y Acceso a los datos. Si ves un mensaje que dice aún no se configuró, haz clic en Comenzar:
    1. En Información de la app, en Nombre de la app, ingresa un nombre para la app.
    2. En Correo electrónico de asistencia del usuario, elige una dirección de correo electrónico de asistencia para que los usuarios se comuniquen contigo si tienen preguntas sobre su consentimiento.
    3. Haz clic en Siguiente.
    4. En Público, selecciona Interno.
    5. Haz clic en Siguiente.
    6. En Información de contacto, ingresa una dirección de correo electrónico a la que se te puedan enviar notificaciones sobre cualquier cambio en tu proyecto.
    7. Haz clic en Siguiente.
    8. En Finalizar, revisa la Política de Datos del Usuario de los Servicios de las APIs de Google y, si estás de acuerdo, selecciona Acepto la Política de Datos del Usuario de los Servicios de las APIs de Google.
    9. Haz clic en Continuar.
    10. Haz clic en Crear.
  3. Por ahora, puedes omitir agregar permisos. En el futuro, cuando crees una app para usarla fuera de tu organización de Google Workspace, debes cambiar el Tipo de usuario a Externo. Luego, agrega los permisos de autorización que requiere tu app. Para obtener más información, consulta la guía completa Configura el consentimiento de OAuth.

Crea e implementa una Cloud Function

  1. En la consola de Google Cloud, haz clic en Activar Cloud Shell Botón Activar Cloud Shell.

    Activa Cloud Shell

    Se abrirá la terminal de Cloud Shell y se iniciará una sesión en el panel inferior de la consola de Google Cloud.

  2. Haz clic en Autorizar para aprovisionar y conectarte a Cloud Shell.

  3. En la terminal de Cloud Shell, activa la API de Cloud Functions, la API de Cloud Build, la API de complementos de Google Workspace y la API de Compute Engine:

    gcloud services enable cloudfunctions.googleapis.com  \
                        cloudbuild.googleapis.com  \
                        gsuiteaddons.googleapis.com  \
                        compute.googleapis.com
    
  4. Haz clic en Botón del editor de código Abrir editor en la barra de herramientas de la ventana de Cloud Shell para iniciar el editor de Cloud Shell.

    Este editor de código integrado proporciona la comodidad de ver y editar archivos en el mismo entorno donde se compilan e implementan los proyectos.

  5. En el directorio vacío, crea el archivo function.js con el siguiente código de muestra:

    /**
     * Cloud Function that loads the homepage for a
     * Google Workspace add-on.
     *
     * @param {Object} req Request sent from Google
     * @param {Object} res Response to send back
     */
    exports.loadHomePage = function addonsHomePage (req, res) {
      res.send(createAction());
    };
    
    /** Creates a card with two widgets. */
    function createAction() {
      return {
        "action": {
          "navigations": [
            {
              "pushCard": {
                "header": {
                  "title": "Cats!"
                },
                "sections": [
                  {
                    "widgets": [
                      {
                        "textParagraph": {
                          "text": "Your random cat:"
                        }
                      },
                      {
                        "image": {
                          "imageUrl": "https://cataas.com/cat"
                         }
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      };
    }
    
  6. En el mismo directorio, crea el archivo package.json con el siguiente código de muestra:

    {
      "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
      }
    }
    
  7. Para volver a la terminal de Cloud Shell, haz clic en Botón Activar Cloud Shell Abrir terminal.

  8. Agrega el rol Cloud Build Service Account (roles/cloudbuild.builds.builder) a la cuenta de servicio predeterminada de Compute Engine.

    Primero, configura el permiso de la cuenta de servicio:

    export PROJECT_ID=$(gcloud config get project)
    export SERVICE_ACCOUNT_NAME=$(gcloud compute project-info describe \
      --format="value(defaultServiceAccount)")
    

    A continuación, otorga el permiso de cuenta de servicio faltante:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
      --role="roles/cloudbuild.builds.builder"
    
  9. Ejecuta el siguiente comando para implementar la función:

    gcloud functions deploy loadHomePage --runtime nodejs22 --trigger-http
    

    Si se te solicita, especifica que no permites invocaciones no autenticadas de la función. La función puede tardar unos minutos en implementarse.

Crea una implementación de complementos

  1. Busca el correo electrónico de la cuenta de servicio del complemento:

    gcloud workspace-add-ons get-authorization
    
  2. Otorga a la cuenta de servicio el rol cloudfunctions.invoker. Reemplaza SERVICE_ACCOUNT_EMAIL por el campo serviceAccountEmail del paso anterior.

    gcloud functions add-iam-policy-binding loadHomePage \
       --role roles/cloudfunctions.invoker \
       --member serviceAccount:SERVICE_ACCOUNT_EMAIL
    
  3. Obtén la URL de la función implementada. Para obtener la URL, ejecuta el siguiente comando y busca el campo url en la sección httpsTrigger:

    gcloud functions describe loadHomePage
    
  4. Para volver al editor de Cloud Shell, haz clic en Botón del editor de código Abrir editor.

  5. En el mismo directorio que package.json, crea el archivo deployment.json con el siguiente código de muestra. Reemplaza URL por el url de la función implementada del paso anterior.

    {
      "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"],
      "addOns": {
        "common": {
          "name": "My HTTP Add-on",
          "logoUrl": "https://raw.githubusercontent.com/webdog/octicons-png/main/black/beaker.png",
          "homepageTrigger": {
            "runFunction": "URL"
          }
        },
        "gmail": {},
        "drive": {},
        "calendar": {},
        "docs": {},
        "sheets": {},
        "slides": {}
      }
    }
    
  6. Regresa a la terminal de Cloud Shell para crear la implementación:

    gcloud workspace-add-ons deployments create quickstart \
       --deployment-file=deployment.json
    

Cómo instalar el complemento

  1. Instala la implementación en modo de desarrollo:

    gcloud workspace-add-ons deployments install quickstart
    
  2. Abre o vuelve a cargar Gmail para ver el complemento. En la barra de herramientas de la derecha, busca el ícono de un vaso de precipitados.

  3. Haz clic en el ícono para abrir el complemento. Si se te solicita, autoriza el complemento.

Opcional: Limpieza

Para evitar que se apliquen cargos a tu cuenta, borra los recursos que creaste:

  1. Desinstala el complemento de tu Cuenta de Google:

    gcloud workspace-add-ons deployments uninstall quickstart
    
  2. Para evitar que se apliquen cargos por los recursos que usaste en esta guía de inicio rápido, borra el proyecto de Cloud:

    gcloud projects delete PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto de Cloud que usaste para la guía de inicio rápido. Puedes encontrar el ID del proyecto de Cloud en la consola de Google Cloud, en la página Panel.

Próximos pasos

Para agregar más funciones a tu complemento de Google Workspace, consulta lo siguiente: