Como desarrollador de complementos de Google Workspace, puede que necesites depurar código para probar cambios o solucionar problemas complejos. La depuración de complementos de Google Workspace puede realizarse de muchas formas diferentes dependiendo de la arquitectura de tu app, sus funciones, cómo se implementa y tus preferencias.
En esta página, se explica cómo depurar un complemento de Google Workspace HTTP con ngrok, una plataforma de entrada unificada que puedes usar para probar entornos de desarrollo locales. En esta guía, puedes probar cambios de código en un entorno local y solucionar problemas en un entorno remoto.
Depura desde el entorno de desarrollo local
En esta sección, interactuarás con tu complemento de Google Workspace que se ejecuta en tu entorno local.
Requisitos previos
Node.js
- Las versiones más recientes de
nodeynpminstaladas en tu entorno local La versión más reciente de
nodemoninstalada en tu entorno local. Se usa para la recarga automática:npm install -g nodemonUn proyecto de Google Cloud. Puedes seguir las secciones Requisitos previos y Configura el entorno de la Guía de inicio rápido.
Es el código del complemento de Google Workspace que se depurará en tu entorno local. En esta guía, usamos las funciones de vínculos de vista previa del ejemplo de código
3p-resourcesdel repositorio de GitHubgoogleworkspace/add-ons-samplescon fines ilustrativos.Un IDE configurado en tu entorno local que pueda depurar. En esta guía, usamos el IDE de
Visual Studio Codey sus funciones de depuración predeterminadas con fines ilustrativos.Una cuenta de
ngrokLa versión más reciente de
gcloudinstalada y inicializada en tu entorno local.
Python
- La versión más reciente de
python3instalada en tu entorno local - La versión más reciente de
pipyvirtualenvinstaladas en tu entorno local Se usan para administrar paquetes de Python y entornos virtuales, respectivamente. - Un proyecto de Google Cloud. Puedes seguir las secciones Requisitos previos y Configura el entorno de la Guía de inicio rápido.
- Es el código del complemento de Google Workspace que se depurará en tu entorno local. En esta guía, usamos las funciones de vínculos de vista previa del ejemplo de código
3p-resourcesdel repositorio de GitHubgoogleworkspace/add-ons-samplescon fines ilustrativos. - Un IDE configurado en tu entorno local que pueda depurar. En esta guía, usamos el IDE de
Visual Studio Codey sus funciones de depuración predeterminadas con fines ilustrativos. - Una cuenta de
ngrok - La versión más reciente de
gcloudinstalada y inicializada en tu entorno local.
Java
- La última versión estable de
Java SE 11's JDKinstalada en tu entorno local - La versión más reciente de
Apache Maveninstalada en tu entorno local Se usa para administrar proyectos de Java. - Un proyecto de Google Cloud. Puedes seguir las secciones Requisitos previos y Configura el entorno de la Guía de inicio rápido.
- Es el código del complemento de Google Workspace que se depurará en tu entorno local. En esta guía, usamos las funciones de vínculos de vista previa del ejemplo de código
3p-resourcesdel repositorio de GitHubgoogleworkspace/add-ons-samplescon fines ilustrativos. - Un IDE configurado en tu entorno local que pueda depurar. En esta guía, usamos el IDE de
Visual Studio Codey sus funciones de depuración predeterminadas con fines ilustrativos. - Una cuenta de
ngrok - La versión más reciente de
gcloudinstalada y inicializada en tu entorno local.
Haz que el servicio de localhost esté disponible públicamente
Debes conectar tu entorno local a Internet para que el complemento de Google Workspace pueda acceder a él. La aplicación ngrok se usa para redireccionar las solicitudes HTTP realizadas a una URL pública a tu entorno local.
- En un navegador de tu entorno local, accede a tu cuenta de
ngrok. - Instala la aplicación y configura tu
authtokenen tu entorno local. - Crea un dominio estático en tu cuenta de
ngrok. En las instrucciones de esta guía, se hace referencia a él comoNGROK_STATIC_DOMAIN.
Crea e instala la implementación del complemento
Configura el complemento de Google Workspace para que envíe 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" } ] }, "httpOptions": { "granularOauthPermissionSupport": "OPT_IN" } } }Reemplaza
NGROK_STATIC_DOMAINpor el dominio estático de tu cuenta dengrok.Configura el proyecto de Google Cloud que se usará:
gcloud config set project PROJECT_IDAdquiere credenciales de usuario nuevas para utilizar las Credenciales predeterminadas de la aplicación:
gcloud auth application-default loginReemplaza
PROJECT_IDpor el ID del proyecto del proyecto de Google Cloud de la app.Crea la implementación:
gcloud workspace-add-ons deployments create manageSupportCases \ --deployment-file=DEPLOYMENT_FILE_PATHReemplaza
DEPLOYMENT_FILE_PATHpor la ruta de acceso a tu archivo de implementación.Instala la implementación:
gcloud workspace-add-ons deployments install manageSupportCasesFigura 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 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 tu complemento de Google Workspace de forma local.
Node.js
En el IDE de
Visual Studio Codeinstalado en tu entorno local, haz lo siguiente:- En una ventana nueva, abre la carpeta
add-ons-samples/node/3p-resources. Configura la aplicación para la ejecución local y la depuración de recarga automática agregando 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" } ... }Desde el directorio raíz, instala la aplicación:
npm installCrea y configura un lanzamiento llamado
Debug Watchque active el scriptdebug-watch. Para ello, crea el archivo.vscode/launch.jsonen el directorio raíz:{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "name": "Debug Watch", "cwd": "${workspaceRoot}", "runtimeExecutable": "npm", "runtimeArgs": ["run-script", "debug-watch"] }] }Agrega un punto de interrupción que detenga el procesamiento de la solicitud HTTP en el archivo
index.jsy comienza a ejecutar y depurar con la configuraciónDebug Watchagregada anteriormente. La aplicación ahora se está ejecutando y escuchando solicitudes HTTP en el puerto9000.
Figura 3: La aplicación se está ejecutando y detecta solicitudes HTTP en el puerto 9000.
- En una ventana nueva, abre la carpeta
Inicia la aplicación
ngroken tu entorno local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Reemplaza
NGROK_STATIC_DOMAINpor el dominio estático de tu cuenta dengrok. Ahora todas las solicitudes se redireccionan a tu entorno local y al puerto que usa la aplicación.
Figura 4: La terminal con el servidor ngroken ejecución y redireccionando.La aplicación
ngroktambién inicia una interfaz web en tu localhost. Puedes supervisar todas las actividades abriéndolo en un navegador.
Figura 5: La interfaz web alojada por la aplicación ngrokno muestra solicitudes HTTP.Para probar tu complemento de Google Workspace, obtén una vista previa de la URL de un caso en un documento de Google nuevo con una cuenta de verificador:
Crea un documento de Google.
Escribe el siguiente vínculo y presiona
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Haga clic en el vínculo.
En el
Visual Studio Codede tu entorno local, puedes ver que la ejecución se detiene en el punto de interrupción que se estableció.
Figura 6: La ejecución se pausa en el punto de interrupción que se estableció. Cuando reanudas la ejecución desde el depurador de
Visual Studio Codeantes de que se agote el tiempo de espera de los complementos de Google Workspace, el complemento de Google Workspace muestra la vista previa del vínculo en el documento de Google desde la caché.Puedes consultar los registros de solicitudes y respuestas HTTP desde la interfaz web alojada por la aplicación
ngroken tu entorno local.
Figura 7: Es la solicitud HTTP de la interfaz web alojada por la aplicación ngrok.Para cambiar el comportamiento de la aplicación, reemplaza
CaseporCase:en la línea51deindex.js. Cuando guardas el archivo,nodemonvuelve a cargar automáticamente la aplicación con el código fuente actualizado yVisual Studio Codepermanece en modo de depuración.
Figura 8: La aplicación se está ejecutando y escuchando solicitudes HTTP en el puerto 9000con el cambio de código cargado.Esta vez, en lugar de hacer clic en el vínculo y esperar unos segundos en un nuevo documento de Google, puedes seleccionar la última solicitud HTTP registrada en la interfaz web alojada por la aplicación
ngroken tu entorno local y hacer clic enReplay. Al igual que la última vez, tu complemento de Google Workspace no responde porque se está depurando de forma activa.Cuando reanudes la ejecución desde el depurador de
Visual Studio Code, podrás ver en la interfaz web alojada por la aplicación dengroken tu entorno local que la aplicación genera una respuesta con la versión actualizada de la tarjeta de vista previa.
Python
En el IDE de
Visual Studio Codeinstalado en tu entorno local, haz lo siguiente:- En una ventana nueva, abre la carpeta
add-ons-samples/python/3p-resources/create_link_preview. Crea un entorno virtual para Python
envy actívalo:virtualenv envsource env/bin/activateInstala todas las dependencias del proyecto con
pipen el entorno virtual:pip install -r requirements.txtCrea el archivo
.vscode/launch.jsonen el directorio raíz y configura un lanzamiento llamadoDebug Watchque active la aplicación desde el módulofunctions-frameworken el puerto9000en modo de depuración en el entorno virtualenv:{ "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" ] }] }Agrega un punto de interrupción que detenga el procesamiento de la solicitud HTTP en el archivo
main.pyy comienza a ejecutar y depurar con la configuraciónDebug Watchagregada anteriormente. La aplicación ahora se está ejecutando y escuchando solicitudes HTTP en el puerto9000.
Figura 3: La aplicación se está ejecutando y detecta solicitudes HTTP en el puerto 9000.
- En una ventana nueva, abre la carpeta
Inicia la aplicación
ngroken tu entorno local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Reemplaza
NGROK_STATIC_DOMAINpor el dominio estático de tu cuenta dengrok. Ahora todas las solicitudes se redireccionan a tu entorno local y al puerto que usa la aplicación.
Figura 4: La terminal con el servidor ngroken ejecución y redireccionando.La aplicación
ngroktambién inicia una interfaz web en tu localhost. Supervisa todas las actividades abriéndolo en un navegador.
Figura 5: La interfaz web alojada por la aplicación ngrokno muestra solicitudes HTTP.Para probar tu complemento de Google Workspace, obtén una vista previa de la URL de un caso en un documento de Google nuevo con una cuenta de verificador:
Crea un documento de Google.
Escribe el siguiente vínculo y presiona
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Haga clic en el vínculo.
En el
Visual Studio Codede tu entorno local, puedes ver que la ejecución se detiene en el punto de interrupción que se estableció.
Figura 6: La ejecución se pausa en el punto de interrupción que se estableció. Cuando reanudas la ejecución desde el depurador de
Visual Studio Codeantes de que se agote el tiempo de espera de los complementos de Google Workspace, el complemento de Google Workspace muestra la vista previa del vínculo en el documento de Google desde la caché.Puedes consultar los registros de solicitudes y respuestas HTTP desde la interfaz web alojada por la aplicación
ngroken tu entorno local.
Figura 7: Es la solicitud HTTP de la interfaz web alojada por la aplicación ngrok.Para cambiar el comportamiento de la aplicación, reemplaza
CaseporCase:en la línea56del archivomain.py. Cuando guardas el archivo,Visual Studio Codevuelve a cargar automáticamente la aplicación con el código fuente actualizado y permanece en el modo de depuración.
Figura 8: La aplicación se está ejecutando y escuchando solicitudes HTTP en el puerto 9000con el cambio de código cargado.Esta vez, en lugar de hacer clic en el vínculo y esperar unos segundos en un nuevo documento de Google, puedes seleccionar la última solicitud HTTP registrada en la interfaz web alojada por la aplicación
ngroken tu entorno local y hacer clic enReplay. Al igual que la última vez, tu complemento de Google Workspace no responde porque se está depurando de forma activa.Cuando reanudes la ejecución desde el depurador de
Visual Studio Code, podrás ver en la interfaz web alojada por la aplicación dengroken tu entorno local que la aplicación genera una respuesta con la versión actualizada de la tarjeta de vista previa.
Java
En el IDE de
Visual Studio Codeinstalado en tu entorno local, haz lo siguiente:- En una ventana nueva, abre la carpeta
add-ons-samples/java/3p-resources. Configura el proyecto de Maven para ejecutar la aplicación
CreateLinkPreviewen el puerto9000de forma local. Para ello, agrega el complemento de compilación de Cloud Functions Frameworkfunction-maven-pluginal archivopom.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> ...Ahora puedes iniciarlo de forma local en modo de depuración:
mvnDebug function:run Preparing to execute Maven in debug mode Listening for transport dt_socket at address: 8000Crea el archivo
.vscode/launch.jsonen el directorio raíz y configura un inicio llamadoRemote Debug Watchque se adjunte a la aplicación que se inició anteriormente en el puerto8000:{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Remote Debug Watch", "projectName": "http-function", "hostName": "localhost", "port": 8000 }] }Agrega un punto de interrupción que detenga el procesamiento de la solicitud HTTP en el archivo
CreateLinkPreview.javay comienza a adjuntar y depurar con la configuraciónRemote Debug Watchagregada anteriormente. La aplicación ahora se está ejecutando y detecta solicitudes HTTP en el puerto9000.
Figura 3: La aplicación se está ejecutando y detecta solicitudes HTTP en el puerto 9000.
- En una ventana nueva, abre la carpeta
Inicia la aplicación
ngroken tu entorno local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Reemplaza
NGROK_STATIC_DOMAINpor el dominio estático de tu cuenta dengrok. Ahora todas las solicitudes se redireccionan a tu entorno local y al puerto que usa la aplicación.
Figura 4: La terminal con el servidor ngroken ejecución y redireccionando.La aplicación
ngroktambién inicia una interfaz web en tu localhost. Supervisa todas las actividades abriéndolo en un navegador.
Figura 5: La interfaz web alojada por la aplicación ngrokno muestra solicitudes HTTP.Para probar tu complemento de Google Workspace, obtén una vista previa de la URL de un caso en un documento de Google nuevo con una cuenta de verificador:
Crea un documento de Google.
Escribe el siguiente vínculo y presiona
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Haga clic en el vínculo.
En el
Visual Studio Codede tu entorno local, puedes ver que la ejecución se detiene en el punto de interrupción que se estableció.
Figura 6: La ejecución se pausa en el punto de interrupción que se estableció. Cuando reanudas la ejecución desde el depurador de
Visual Studio Codeantes de que se agote el tiempo de espera de los complementos de Google Workspace, el complemento de Google Workspace muestra la vista previa del vínculo en el documento de Google desde la caché.Puedes consultar los registros de solicitudes y respuestas HTTP desde la interfaz web alojada por la aplicación
ngroken tu entorno local.
Figura 7: Es la solicitud HTTP de la interfaz web alojada por la aplicación ngrok.Para cambiar el comportamiento de la aplicación, reemplaza
CaseporCase:en la línea78del archivoCreateLinkPreview.java, reinicia el procesomvnDebugy vuelve a iniciarRemote Debug Watchpara volver a adjuntar y reiniciar la depuración.Esta vez, en lugar de hacer clic en el vínculo y esperar unos segundos en un nuevo documento de Google, puedes seleccionar la última solicitud HTTP registrada en la interfaz web alojada por la aplicación
ngroken tu entorno local y hacer clic enReplay. Al igual que la última vez, tu complemento de Google Workspace no responde porque se está depurando de forma activa.Cuando reanudes la ejecución desde el depurador de
Visual Studio Code, podrás ver en la interfaz web alojada por la aplicación dengroken tu entorno local que la aplicación genera una respuesta con la versión actualizada de la tarjeta de vista previa.
Depura desde un entorno remoto
En esta sección, interactuarás con tu complemento de Google Workspace que se ejecuta en un entorno remoto.
Requisitos previos
- Se implementó e instaló tu complemento de Google Workspace.
- Tu aplicación se ejecuta en tu entorno remoto con el depurador habilitado en un puerto determinado, y se hace referencia a él como
REMOTE_DEBUG_PORTen las instrucciones de esta guía. - Tu entorno local puede hacer
ssha tu entorno remoto. - Se configura un IDE en tu entorno local que puede depurar. En esta guía, usamos el
Visual Studio CodeIDE y sus funciones de depuración predeterminadas a modo de ilustración.
Conecta tus entornos locales y remotos
En tu entorno local desde el que deseas iniciar una conexión de cliente de depuración, configura un túnel SSH:
ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESSReemplaza lo siguiente:
LOCAL_DEBUG_PORT: Es el puerto de depuración en tu entorno local.REMOTE_USERNAME: Es el nombre de usuario en tu entorno remoto.REMOTE_ADDRESS: Es la dirección de tu entorno remoto.REMOTE_DEBUG_PORT: Es el puerto de depuración en tu entorno remoto.
El puerto de depuración de tu entorno local ahora está vinculado al puerto de depuración de tu entorno remoto.
Cómo iniciar la depuración
En el IDE de Visual Studio Code instalado en tu entorno local, haz lo siguiente:
- En una ventana nueva, abre el código fuente de tu app.
Crea el archivo
.vscode/launch.jsonen el directorio raíz y configura un lanzamiento llamadoDebug Remoteque se adjunte al puerto de depuración en tu entorno local: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_PORTpor el puerto de depuración en tu entorno local.Agrega un breakpoint en el código fuente de tu app que detenga el procesamiento de solicitudes HTTP y comienza a ejecutar y depurar con la configuración de
Debug Remoteque agregaste antes.Interactúa con el complemento de Google Workspace instalado. Tu complemento de Google Workspace no responde porque se está depurando de forma activa en el IDE de
Visual Studio Code.
Temas relacionados
- Obtén más información para consultar registros de errores.