Prueba y depura complementos HTTP de Google Workspace

Como desarrollador de complementos de Google Workspace, es posible que debas depurar código para probar cambios o solucionar problemas complejos. Depuración de complementos de Google Workspace se puede hacer de muchas maneras diferentes según la arquitectura de tu app, hace la app, cómo se implementa y tus preferencias.

En esta página, se explica cómo depurar un complemento HTTP de Google Workspace con ngrok, una plataforma de entrada unificada que puedes usar para probar entornos de desarrollo de aplicaciones. En esta guía, probarás cambios de código en una instancia y solucionar problemas en un entorno remoto.

Cómo depurar desde un entorno de desarrollo local

En esta sección, interactuarás con tu complemento de Google Workspace que que se ejecuta en tu entorno local.

Cómo depurar desde el desarrollo local
medio ambiente

Figura 1: Depura en un entorno de desarrollo local.

Requisitos previos

Node.js

Python

Java

Haz que el servicio localhost esté disponible de forma pública

Debes conectar tu entorno local a Internet para que el el complemento de Google Workspace puede acceder a él. Se usa la aplicación ngrok para redireccionar las solicitudes HTTP realizadas a una URL pública a tu entorno local.

  1. En un navegador de tu entorno local, accede a tu cuenta de ngrok.
  2. Instala la aplicación y configura tu authtoken en tu entorno local entorno.
  3. Crea un dominio estático en tu ngrok cuenta, se hace referencia a ella como NGROK_STATIC_DOMAIN en las instrucciones de esta guía.

Crea e instala la implementación del complemento

  1. Configurar el complemento de Google Workspace para enviar todas sus solicitudes HTTP a tu dominio estático. Tu archivo de implementación debería verse de la siguiente manera:

    {
      "oauthScopes": [
        "https://www.googleapis.com/auth/workspace.linkpreview",
        "https://www.googleapis.com/auth/workspace.linkcreate"
      ],
      "addOns": {
        "common": {
          "name": "Manage support cases",
          "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png",
          "layoutProperties": {
            "primaryColor": "#dd4b39"
          }
        },
        "docs": {
          "linkPreviewTriggers": [
            {
              "runFunction": "NGROK_STATIC_DOMAIN",
              "patterns": [
                {
                  "hostPattern": "example.com",
                  "pathPrefix": "support/cases"
                },
                {
                  "hostPattern": "*.example.com",
                  "pathPrefix": "cases"
                },
                {
                  "hostPattern": "cases.example.com"
                }
              ],
              "labelText": "Support case",
              "localizedLabelText": {
                "es": "Caso de soporte"
              },
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ],
          "createActionTriggers": [
            {
              "id": "createCase",
              "labelText": "Create support case",
              "localizedLabelText": {
                "es": "Crear caso de soporte"
              },
              "runFunction": "$URL2",
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ]
        }
      }
    }
    

    Reemplaza NGROK_STATIC_DOMAIN por el dominio estático en tu Cuenta de ngrok.

  2. Configura el proyecto de Google Cloud que se usará:

    gcloud config set project PROJECT_ID
    
  3. Adquiere nuevas credenciales de usuario para utilizarlas como Configuración predeterminada de la aplicación Credenciales:

    gcloud auth application-default login
    

    Reemplaza PROJECT_ID por el ID del proyecto para el proyecto de Google Cloud de la app.

  4. Crea la implementación:

    gcloud workspace-add-ons deployments create manageSupportCases \
        --deployment-file=DEPLOYMENT_FILE_PATH
    

    Reemplaza DEPLOYMENT_FILE_PATH por la ruta de acceso de tu archivo Deployment.

  5. Instala la implementación:

    gcloud workspace-add-ons deployments install manageSupportCases
    

El complemento de Google Workspace envía todas sus solicitudes HTTP al
dominio estático

Figura 2: El complemento de Google Workspace envía todas sus solicitudes HTTP al dominio estático. El servicio público de ngrok actúa como un puente entre los el complemento de Google Workspace y el código de la aplicación que se ejecuta de forma local.

Prueba el complemento de Google Workspace

Puedes implementar, probar, depurar y volver a cargar automáticamente tus archivos el complemento de Google Workspace.

Node.js

  1. Desde el IDE de Visual Studio Code instalado en tu entorno local, haz lo siguiente: haz lo siguiente:

    1. En una ventana nueva, abre la carpeta. add-ons-samples/node/3p-resources
    2. Configura la aplicación para la ejecución local y vuelve a cargar la depuración automáticamente de la siguiente manera: Agrega una dependencia y dos secuencias de comandos en el archivo package.json:

      {
          ...
          "dependencies": {
            ...
            "@google-cloud/functions-framework": "^3.3.0"
          },
          "scripts": {
              ...
              "start": "npx functions-framework --target=createLinkPreview --port=9000",
              "debug-watch": "nodemon --watch ./ --exec npm start"
          }
          ...
      }
      
    3. Desde el directorio raíz, instala la aplicación:

      npm install
      
    4. Crea y configura un lanzamiento llamado Debug Watch que active la función de secuencia de comandos debug-watch creando el archivo .vscode/launch.json en directorio raíz:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "node",
              "request": "launch",
              "name": "Debug Watch",
              "cwd": "${workspaceRoot}",
              "runtimeExecutable": "npm",
              "runtimeArgs": ["run-script", "debug-watch"]
          }]
      }
      
    5. Agrega un punto de interrupción que detenga el procesamiento de solicitudes HTTP en la index.js y comenzar a ejecutar y la depuración con el Se agregó la configuración de Debug Watch antes. Ahora la aplicación ejecuta y escucha solicitudes HTTP en el puerto 9000.

      La aplicación se ejecuta y escucha solicitudes HTTP en el
puerto “9000”

      Figura 3: La aplicación se ejecuta y escucha HTTP de estado en el puerto 9000.

  2. Inicia la aplicación ngrok en tu entorno local:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000
    

    Reemplaza NGROK_STATIC_DOMAIN por el dominio estático en tu cuenta de ngrok. Todas las solicitudes se redireccionarán a la instancia y el puerto que usa la aplicación.

    La terminal con el servidor “ngrok” en ejecución y
redireccionamiento

    Figura 4: La terminal con el servidor ngrok en ejecución y redireccionando.

  3. ngrok también inicia una interfaz web en tu localhost. puedes supervisar todas las actividades abriéndola en un navegador.

    La interfaz web alojada por la aplicación “ngrok” sin HTTP
solicitudes

    Figura 5: La interfaz web que aloja la aplicación ngrok que no muestra solicitudes HTTP.

  4. Obtén una vista previa de la URL de un caso en una nueva ventana para probar tu complemento de Google Workspace Documento de Google con una cuenta de verificador:

    • Crea un nuevo documento de Google.

      Cómo crear un documento de Google nuevo

    • Escribe el siguiente vínculo y presiona enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Haga clic en el vínculo.

  5. En el Visual Studio Code de tu entorno local, puedes ver que se pausó la ejecución en el punto de interrupción que se estableció.

    La ejecución se pausó en el punto de interrupción que se
establecer

    Figura 6: Se pausó la ejecución en el punto de interrupción que se estableció.

  6. Cuando reanudas la ejecución desde el depurador de Visual Studio Code antes de que se agote el tiempo de espera de los complementos de Google Workspace muestra la vista previa del vínculo en el documento de Google de la caché.

  7. Puedes verificar los registros de solicitud y respuesta HTTP desde la interfaz web alojada por la aplicación ngrok en tu entorno local.

    La solicitud HTTP de la interfaz web alojada por “ngrok”
aplicación

    Figura 7: La solicitud HTTP de la interfaz web alojada por el ngrok.

  8. Para cambiar el comportamiento de la aplicación, reemplaza Case por Case: intercalado. 51 de index.js Cuando guardes el archivo, nodemon automáticamente vuelve a cargar la aplicación con el código fuente actualizado Visual Studio Code permanece en modo de depuración.

    La aplicación se ejecuta y escucha solicitudes HTTP en el puerto.
“9000” con el cambio de código
cargado

    Figura 8: La aplicación se ejecuta y detecta solicitudes HTTP. en el puerto 9000 con el cambio de código cargado

  9. Esta vez, en vez de hacer clic en el vínculo y esperar unos segundos un nuevo documento de Google, puedes seleccionar la última solicitud HTTP registrada en la Web interfaz alojada por la aplicación ngrok en tu entorno local y haz clic en Replay. Al igual que la última vez, tu complemento de Google Workspace no responde porque se está depurando activamente.

  10. Cuando reanudas la ejecución desde el depurador de Visual Studio Code Desde la interfaz web que aloja la aplicación ngrok en tu entorno local con el que la aplicación genera una respuesta la versión actualizada de la tarjeta de vista previa.

Python

  1. Desde el IDE de Visual Studio Code instalado en tu entorno local, haz lo siguiente: haz lo siguiente:

    1. En una ventana nueva, abre la carpeta. add-ons-samples/python/3p-resources/create_link_preview
    2. Crea un entorno virtual nuevo para env de Python y actívalo:

      virtualenv env
      source env/bin/activate
      
    3. Instala todas las dependencias del proyecto usando pip en el entorno:

      pip install -r requirements.txt
      
    4. Crea el archivo .vscode/launch.json en el directorio raíz. configurar un lanzamiento llamado Debug Watch que active la aplicación del módulo functions-framework en el puerto 9000, en modo de depuración en el entorno virtual env:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "python",
              "request": "launch",
              "name": "Debug Watch",
              "python": "${workspaceFolder}/env/bin/python3",
              "module": "functions_framework",
              "args": [
                  "--target", "create_link_preview",
                  "--port", "9000",
                  "--debug"
              ]
          }]
      }
      
    5. Agrega un punto de interrupción que detenga el procesamiento de solicitudes HTTP en la main.py y comenzar a ejecutar y la depuración con el Se agregó la configuración de Debug Watch antes. Ahora la aplicación ejecuta y escucha solicitudes HTTP en el puerto 9000.

      La aplicación se ejecuta y escucha solicitudes HTTP en el
puerto “9000”

      Figura 3: La aplicación se ejecuta y escucha HTTP de estado en el puerto 9000.

  2. Inicia la aplicación ngrok en tu entorno local:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000
    

    Reemplaza NGROK_STATIC_DOMAIN por el dominio estático en tu cuenta de ngrok. Todas las solicitudes se redireccionarán a la instancia y el puerto que usa la aplicación.

    La terminal con el servidor “ngrok” en ejecución y
redireccionamiento

    Figura 4: La terminal con el servidor ngrok en ejecución y redireccionando.

  3. ngrok también inicia una interfaz web en tu localhost. puedes supervisar todas las actividades abriéndola en un navegador.

    La interfaz web alojada por la aplicación “ngrok” sin HTTP
solicitudes

    Figura 5: La interfaz web que aloja la aplicación ngrok que no muestra solicitudes HTTP.

  4. Obtén una vista previa de la URL de un caso en una nueva ventana para probar tu complemento de Google Workspace Documento de Google con una cuenta de verificador:

    • Crea un nuevo documento de Google.

      Cómo crear un documento de Google nuevo

    • Escribe el siguiente vínculo y presiona enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Haga clic en el vínculo.

  5. En el Visual Studio Code de tu entorno local, puedes ver que se pausó la ejecución en el punto de interrupción que se estableció.

    La ejecución se pausó en el punto de interrupción que se
establecer

    Figura 6: Se pausó la ejecución en el punto de interrupción que se estableció.

  6. Cuando reanudas la ejecución desde el depurador de Visual Studio Code antes de que se agote el tiempo de espera de los complementos de Google Workspace muestra la vista previa del vínculo en el documento de Google de la caché.

  7. Puedes verificar los registros de solicitud y respuesta HTTP desde la interfaz web alojada por la aplicación ngrok en tu entorno local.

    La solicitud HTTP de la interfaz web alojada por “ngrok”
aplicación

    Figura 7: La solicitud HTTP de la interfaz web alojada por el ngrok.

  8. Para cambiar el comportamiento de la aplicación, reemplaza Case por Case: intercalado. 56 del archivo main.py. Cuando guardes el archivo, Visual Studio Code vuelve a cargar automáticamente la aplicación con el código fuente actualizado y permanece en modo de depuración.

    La aplicación se ejecuta y escucha solicitudes HTTP en el puerto.
“9000” con el cambio de código
cargado

    Figura 8: La aplicación se ejecuta y detecta solicitudes HTTP. en el puerto 9000 con el cambio de código cargado

  9. Esta vez, en vez de hacer clic en el vínculo y esperar unos segundos un nuevo documento de Google, puedes seleccionar la última solicitud HTTP registrada en la Web interfaz alojada por la aplicación ngrok en tu entorno local y haz clic en Replay. Al igual que la última vez, tu complemento de Google Workspace no responde porque se está depurando activamente.

  10. Cuando reanudas la ejecución desde el depurador de Visual Studio Code Desde la interfaz web que aloja la aplicación ngrok en tu entorno local con el que la aplicación genera una respuesta la versión actualizada de la tarjeta de vista previa.

Java

  1. Desde el IDE de Visual Studio Code instalado en tu entorno local, haz lo siguiente: haz lo siguiente:

    1. En una ventana nueva, abre la carpeta. add-ons-samples/java/3p-resources
    2. Configura el proyecto de Maven para ejecutar la aplicación CreateLinkPreview en el puerto 9000 de forma local agregando el Cloud El complemento de compilación function-maven-plugin de Functions Framework en Archivo pom.xml:

      ...
      <plugin>
          <groupId>com.google.cloud.functions</groupId>
          <artifactId>function-maven-plugin</artifactId>
          <version>0.11.0</version>
          <configuration>
              <functionTarget>CreateLinkPreview</functionTarget>
              <port>9000</port>
          </configuration>
      </plugin>
      ...
      
    3. Ahora puedes iniciarla de manera local en modo de depuración:

      mvnDebug function:run
      Preparing to execute Maven in debug mode
      Listening for transport dt_socket at address: 8000
      
    4. Crea el archivo .vscode/launch.json en el directorio raíz. configurar un lanzamiento llamado Remote Debug Watch que se conecte al aplicación iniciada anteriormente con el puerto 8000:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "java",
              "request": "attach",
              "name": "Remote Debug Watch",
              "projectName": "http-function",
              "hostName": "localhost",
              "port": 8000
          }]
      }
      
    5. Agrega un punto de interrupción que detenga el procesamiento de solicitudes HTTP en la CreateLinkPreview.java y comenzar a adjuntar y la depuración con el Se agregó la configuración de Remote Debug Watch antes. La aplicación es que ahora se ejecutan y están a la escucha de solicitudes HTTP en el puerto 9000.

      La aplicación se ejecuta y escucha solicitudes HTTP en el
puerto “9000”

      Figura 3: La aplicación ejecuta y escucha HTTP de estado en el puerto 9000.

  2. Inicia la aplicación ngrok en tu entorno local:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000
    

    Reemplaza NGROK_STATIC_DOMAIN por el dominio estático en tu cuenta de ngrok. Todas las solicitudes se redireccionarán a la instancia y el puerto que usa la aplicación.

    La terminal con el servidor “ngrok” en ejecución y
redireccionamiento

    Figura 4: La terminal con el servidor ngrok en ejecución y redireccionando.

  3. ngrok también inicia una interfaz web en tu localhost. puedes supervisar todas las actividades abriéndola en un navegador.

    La interfaz web alojada por la aplicación “ngrok” sin HTTP
solicitudes

    Figura 5: La interfaz web que aloja la aplicación ngrok que no muestra solicitudes HTTP.

  4. Obtén una vista previa de la URL de un caso en una nueva ventana para probar tu complemento de Google Workspace Documento de Google con una cuenta de verificador:

    • Crea un nuevo documento de Google.

      Cómo crear un documento de Google nuevo

    • Escribe el siguiente vínculo y presiona enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Haga clic en el vínculo.

  5. En el Visual Studio Code de tu entorno local, puedes ver que se pausó la ejecución en el punto de interrupción que se estableció.

    La ejecución se pausó en el punto de interrupción que se
establecer

    Figura 6: Se pausó la ejecución en el punto de interrupción que se estableció.

  6. Cuando reanudas la ejecución desde el depurador de Visual Studio Code antes de que se agote el tiempo de espera de los complementos de Google Workspace muestra la vista previa del vínculo en el documento de Google de la caché.

  7. Puedes verificar los registros de solicitud y respuesta HTTP desde la interfaz web alojada por la aplicación ngrok en tu entorno local.

    La solicitud HTTP de la interfaz web alojada por “ngrok”
aplicación

    Figura 7: La solicitud HTTP de la interfaz web alojada por el ngrok.

  8. Para cambiar el comportamiento de la aplicación, reemplaza Case por Case: intercalado. 78 del archivo CreateLinkPreview.java; reinicia mvnDebug y reinicia Remote Debug Watch para reconectarla y reiniciarla. del contenedor.

  9. Esta vez, en vez de hacer clic en el vínculo y esperar unos segundos un nuevo documento de Google, puedes seleccionar la última solicitud HTTP registrada en la Web interfaz alojada por la aplicación ngrok en tu entorno local y haz clic en Replay. Al igual que la última vez, tu complemento de Google Workspace no responde porque se está depurando activamente.

  10. Cuando reanudas la ejecución desde el depurador de Visual Studio Code Desde la interfaz web que aloja la aplicación ngrok en tu entorno local con el que la aplicación genera una respuesta la versión actualizada de la tarjeta de vista previa.

Depurar desde un entorno remoto

En esta sección, interactuarás con tu complemento de Google Workspace que se ejecuta en un entorno remoto.

Depurar desde el dispositivo remoto
medio ambiente

Figura 9: Depurar desde un entorno remoto

Requisitos previos

  • Se implementó y se instaló tu complemento de Google Workspace.
  • Tu aplicación que se ejecuta en tu entorno remoto con el depurador habilitado en un puerto determinado, se denomina REMOTE_DEBUG_PORT en las instrucciones de esta guía.
  • Tu entorno local puede ssh a tu entorno remoto.
  • Un IDE configurado en tu entorno local que puede depurar. Usamos la Visual Studio Code IDE y su configuración predeterminada funciones de depuración de este con fines ilustrativos.

Conecta tus entornos locales y remotos

En tu entorno local desde el que quieres iniciar un cliente de depuración de red, configura un túnel SSH:

ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS

Reemplaza lo siguiente:

  • LOCAL_DEBUG_PORT: Es el puerto de depuración en tu entorno local. en un entorno de nube.
  • REMOTE_USERNAME: Es el nombre de usuario en el entorno remoto.
  • REMOTE_ADDRESS: Es la dirección de tu entorno remoto.
  • REMOTE_DEBUG_PORT: Es el puerto de depuración del control remoto. en un entorno de nube.

El puerto de depuración en tu entorno local ahora está vinculado al puerto de depuración en tu en un entorno remoto.

Cómo iniciar la depuración

Desde el IDE de Visual Studio Code instalado en tu entorno local, haz lo siguiente: lo siguiente:

  1. En una ventana nueva, abre el código fuente de la app.
  2. Crea el archivo .vscode/launch.json en el directorio raíz y configura una Inicia con el nombre Debug Remote que se conecta al puerto de depuración en tu red local entorno:

    Node.js

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "attach",
            "name": "Debug Remote",
            "address": "127.0.0.1",
            "port": LOCAL_DEBUG_PORT
        }]
    }
    

    Python

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "python",
            "request": "attach",
            "name": "Debug Remote",
            "connect": {
                "host": "127.0.0.1",
                "port": LOCAL_DEBUG_PORT
            }
        }]
    }
    

    Java

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "java",
            "request": "attach",
            "name": "Debug Remote",
            "hostName": "127.0.0.1",
            "port": LOCAL_DEBUG_PORT
        }]
    }
    

    Reemplaza LOCAL_DEBUG_PORT por el puerto de depuración en tu entorno local.

  3. Agrega un punto de interrupción en el código fuente de tu app que detenga la solicitud HTTP. procesamiento y comenzar a ejecutar y depurando con la configuración Debug Remote que se agregó antes.

Interactúa con el complemento de Google Workspace instalado. Tu El complemento de Google Workspace no responde porque se está usando activamente depurado en el IDE de Visual Studio Code.

Aprende a consultar registros de errores.