Como desenvolvedor de Complementos do Google Workspace, talvez você precise depurar código para testar alterações ou resolver problemas complexos. Depuração de complementos do Google Workspace pode ser feito de várias maneiras diferentes dependendo da arquitetura do app, quais o que o app faz, como ele é implantado e suas preferências.
Nesta página, explicamos como depurar um complemento HTTP do Google Workspace usando ngrok, que é uma plataforma de entrada unificada que pode ser usada para testar ambientes de desenvolvimento de software. Neste guia, você vai testar mudanças de código em uma e solucionar problemas em um ambiente remoto.
Depurar a partir do ambiente de desenvolvimento local
Nesta seção, você vai interagir com um complemento do Google Workspace que é executado no ambiente local.
Figura 1. Depurar em um ambiente de desenvolvimento local.
Pré-requisitos
Node.js
- Versões mais recentes do
node
e donpm
instalado no seu ambiente local. A versão mais recente do
nodemon
instalada no seu local da Web, ele é usado para fins de atualização automática:npm install -g nodemon
Um projeto do Google Cloud. Siga as seções Pré-requisitos e Configure ambiente do Guia de início rápido guia.
O código do complemento do Google Workspace para depurar no seu ambiente local de nuvem. Usamos os recursos do link de visualização do exemplo de código
3p-resources
do repositório do GitHubgoogleworkspace/add-ons-samples
neste guia para fins ilustrativos.Um ambiente de desenvolvimento integrado configurado no ambiente local para depuração. Usamos o
Visual Studio Code
IDE e os respectivos recursos de depuração na neste guia para fins ilustrativos.Uma conta do
ngrok
.Versão mais recente do app
gcloud
instalado e inicializado no no ambiente local.
Python
- Versão mais recente do app
python3
instalado no seu ambiente local. - Versão mais recente do
pip
evirtualenv
instalado no seu ambiente local, elas são usadas para gerenciar pacotes Python e ambientes, respectivamente. - Um projeto do Google Cloud. Siga as seções Pré-requisitos e Configure ambiente do Guia de início rápido guia.
- O código do complemento do Google Workspace para depurar no seu ambiente local
de nuvem. Usamos os recursos do link de visualização do exemplo de código
3p-resources
do repositório do GitHubgoogleworkspace/add-ons-samples
neste guia para fins ilustrativos. - Um ambiente de desenvolvimento integrado configurado no ambiente local para depuração. Usamos o
Visual Studio Code
IDE e os respectivos recursos de depuração na neste guia para fins ilustrativos. - Uma conta do
ngrok
. - Versão mais recente do app
gcloud
instalado e inicializado no no ambiente local.
Java
- Versão estável mais recente do
Java SE 11's JDK
instalado no seu sistema local de nuvem. - Versão mais recente do app
Apache Maven
instalado no seu ambiente local, que é usada para gerenciar projetos Java. - Um projeto do Google Cloud. Siga as seções Pré-requisitos e Configure ambiente do Guia de início rápido guia.
- O código do complemento do Google Workspace para depurar no seu ambiente local
de nuvem. Usamos os recursos do link de visualização do exemplo de código
3p-resources
do repositório do GitHubgoogleworkspace/add-ons-samples
neste guia para fins ilustrativos. - Um ambiente de desenvolvimento integrado configurado no ambiente local para depuração. Usamos o
Visual Studio Code
IDE e os respectivos recursos de depuração na neste guia para fins ilustrativos. - Uma conta do
ngrok
. - Versão mais recente do app
gcloud
instalado e inicializado no no ambiente local.
Tornar o serviço localhost disponível publicamente
Você precisa conectar seu ambiente local à internet para que o
pelo complemento do Google Workspace. O aplicativo ngrok
é usado
para redirecionar solicitações HTTP feitas em um URL público para seu ambiente local.
- Em um navegador no seu ambiente local, faça login na conta
ngrok
. - Instale o aplicativo e configure o
authtoken
no seu local de nuvem. - Crie um domínio estático no seu
ngrok
, é referenciada comoNGROK_STATIC_DOMAIN
nas instruções deste guia.
Criar e instalar a implantação de complementos
Configure o complemento do Google Workspace para enviar todas as solicitações HTTP dele para seu domínio estático. O arquivo de implantação será semelhante a este:
{ "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" } ] } } }
Substitua
NGROK_STATIC_DOMAIN
pelo domínio estático no seungrok
conta.Defina o projeto do Google Cloud a ser usado:
gcloud config set project PROJECT_ID
Consiga novas credenciais de usuário que serão usadas no Application Default Credenciais:
gcloud auth application-default login
Substitua
PROJECT_ID
pelo ID do projeto para o projeto do app no Google Cloud.Crie a implantação:
gcloud workspace-add-ons deployments create manageSupportCases \ --deployment-file=DEPLOYMENT_FILE_PATH
Substitua
DEPLOYMENT_FILE_PATH
pelo caminho do seu de implantação do Google Cloud.Instale a implantação:
gcloud workspace-add-ons deployments install manageSupportCases
Figura 2. O complemento do Google Workspace envia todas as solicitações HTTP
ao domínio estático. O serviço público ngrok
atua como uma ponte entre as
Complemento do Google Workspace e o código do aplicativo executado
localmente.
Testar o complemento do Google Workspace
Implante, teste, depure e recarregue automaticamente Complemento do Google Workspace.
Node.js
No ambiente de desenvolvimento integrado
Visual Studio Code
instalado no ambiente local, faça o seguinte:- Em uma nova janela, abra a pasta
add-ons-samples/node/3p-resources
: Configure o aplicativo para depuração de execução local e atualização automática usando adicionando uma dependência e dois scripts no arquivo
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" } ... }
No diretório raiz, instale o aplicativo:
npm install
Crie e configure uma inicialização chamada
Debug Watch
que acione o scriptdebug-watch
criando o arquivo.vscode/launch.json
diretório raiz:{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "name": "Debug Watch", "cwd": "${workspaceRoot}", "runtimeExecutable": "npm", "runtimeArgs": ["run-script", "debug-watch"] }] }
Adicione um ponto de interrupção que interrompa o processamento da solicitação HTTP no
index.js
arquivo e comece a executar e depurando com o ConfiguraçãoDebug Watch
adicionada antes. Agora o aplicativo está executar e detectar solicitações HTTP na porta9000
.Figura 3. O aplicativo está em execução e detectando HTTP solicitações na porta
9000
.
- Em uma nova janela, abra a pasta
Inicie o aplicativo
ngrok
no seu ambiente local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000
Substitua
NGROK_STATIC_DOMAIN
pelo domínio estático em sua contangrok
. Todas as solicitações agora são redirecionadas ao seu local e a porta usada pelo aplicativo.Figura 4. O terminal com o servidor do
ngrok
em execução e redirecionando.Uma interface da Web também é iniciada no localhost pelo
ngrok
. você pode monitorar todas as atividades abrindo-o em um navegador.Figura 5. A interface da Web hospedada pelo aplicativo
ngrok
sem mostrar solicitações HTTP.Teste seu complemento do Google Workspace visualizando o URL de um caso em uma nova Documento Google com uma conta de testador:
Crie um novo documento Google.
Digite o seguinte link e pressione
enter
:https://example.com/support/case/?name=Name1&description=Description1&priority=P1
Clique no link.
No
Visual Studio Code
do seu ambiente local, é possível observar que a execução é pausada no ponto de interrupção definido.Figura 6. A execução é pausada no ponto de interrupção definido.
Quando você retomar a execução do depurador de
Visual Studio Code
antes que os complementos do Google Workspace expirem o tempo limite do complemento do Google Workspace. exibe a visualização do link no arquivo do Documentos Google armazenado em cache.É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedado pelo aplicativo
ngrok
no seu ambiente local.Figura 7. A solicitação HTTP da interface da Web hospedada pelo
ngrok
.Para mudar o comportamento do aplicativo, substitua
Case
porCase:
inline51
deindex.js
. Quando você salvar o arquivo,nodemon
automaticamente recarrega o aplicativo com o código-fonte atualizado eVisual Studio Code
permanece no modo de depuração.Figura 8. O aplicativo está em execução e recebendo solicitações HTTP na porta
9000
com a mudança de código carregada.Desta vez, em vez de clicar no link e aguardar alguns segundos um novo documento Google, poderá selecionar a última solicitação HTTP registrada na Web de interface hospedada pelo aplicativo
ngrok
no seu ambiente local e clique emReplay
. Igual à última vez, seu complemento do Google Workspace não responde porque está sendo depurado ativamente.Quando você retomar a execução do depurador de
Visual Studio Code
como podemos ver na interface da Web hospedada pelo aplicativongrok
em seu ambiente local para o qual o aplicativo gera uma resposta a versão atualizada do card de visualização.
Python
No ambiente de desenvolvimento integrado
Visual Studio Code
instalado no ambiente local, faça o seguinte:- Em uma nova janela, abra a pasta
add-ons-samples/python/3p-resources/create_link_preview
: Crie um novo ambiente virtual para o Python
env
e ative-o:virtualenv env
source env/bin/activate
Instale todas as dependências do projeto usando
pip
na VM de nuvem:pip install -r requirements.txt
Crie o arquivo
.vscode/launch.json
no diretório raiz e configure uma inicialização chamadaDebug Watch
que aciona o aplicativo do módulofunctions-framework
na porta9000
no modo de depuração no ambiente 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" ] }] }
Adicione um ponto de interrupção que interrompa o processamento da solicitação HTTP no
main.py
arquivo e comece a executar e depurando com o ConfiguraçãoDebug Watch
adicionada anteriormente. Agora o aplicativo está executar e detectar solicitações HTTP na porta9000
.Figura 3. O aplicativo está em execução e detectando HTTP solicitações na porta
9000
.
- Em uma nova janela, abra a pasta
Inicie o aplicativo
ngrok
no seu ambiente local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000
Substitua
NGROK_STATIC_DOMAIN
pelo domínio estático em sua contangrok
. Todas as solicitações agora são redirecionadas ao seu local e a porta usada pelo aplicativo.Figura 4. O terminal com o servidor do
ngrok
em execução e redirecionando.Uma interface da Web também é iniciada no localhost pelo
ngrok
. você pode monitorar todas as atividades abrindo-o em um navegador.Figura 5. A interface da Web hospedada pelo aplicativo
ngrok
sem mostrar solicitações HTTP.Teste seu complemento do Google Workspace visualizando o URL de um caso em uma nova Documento Google com uma conta de testador:
Crie um novo documento Google.
Digite o seguinte link e pressione
enter
:https://example.com/support/case/?name=Name1&description=Description1&priority=P1
Clique no link.
No
Visual Studio Code
do seu ambiente local, é possível observar que a execução é pausada no ponto de interrupção definido.Figura 6. A execução é pausada no ponto de interrupção definido.
Quando você retomar a execução do depurador de
Visual Studio Code
antes que os complementos do Google Workspace expirem o tempo limite do complemento do Google Workspace. exibe a visualização do link no arquivo do Documentos Google armazenado em cache.É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedado pelo aplicativo
ngrok
no seu ambiente local.Figura 7. A solicitação HTTP da interface da Web hospedada pelo
ngrok
.Para mudar o comportamento do aplicativo, substitua
Case
porCase:
inline56
do arquivomain.py
. Quando você salvar o arquivo,Visual Studio Code
recarrega automaticamente o aplicativo com o código-fonte atualizado e permanece no modo de depuração.Figura 8. O aplicativo está em execução e recebendo solicitações HTTP na porta
9000
com a mudança de código carregada.Desta vez, em vez de clicar no link e aguardar alguns segundos um novo documento Google, poderá selecionar a última solicitação HTTP registrada na Web de interface hospedada pelo aplicativo
ngrok
no seu ambiente local e clique emReplay
. Igual à última vez, seu complemento do Google Workspace não responde porque está sendo depurado ativamente.Quando você retomar a execução do depurador de
Visual Studio Code
como podemos ver na interface da Web hospedada pelo aplicativongrok
em seu ambiente local para o qual o aplicativo gera uma resposta a versão atualizada do card de visualização.
Java
No ambiente de desenvolvimento integrado
Visual Studio Code
instalado no ambiente local, faça o seguinte:- Em uma nova janela, abra a pasta
add-ons-samples/java/3p-resources
: Configurar o projeto Maven para executar o aplicativo
CreateLinkPreview
na porta9000
localmente adicionando o Cloud Plug-in de buildfunction-maven-plugin
do Functions Framework no Arquivopom.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> ...
Agora você pode iniciá-lo localmente no modo de depuração:
mvnDebug function:run Preparing to execute Maven in debug mode Listening for transport dt_socket at address: 8000
Crie o arquivo
.vscode/launch.json
no diretório raiz e configure uma inicialização chamadaRemote Debug Watch
que é anexada ao aplicativo iniciado anteriormente com a porta8000
:{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Remote Debug Watch", "projectName": "http-function", "hostName": "localhost", "port": 8000 }] }
Adicione um ponto de interrupção que interrompa o processamento da solicitação HTTP no
CreateLinkPreview.java
arquivo e comece a anexar e depurando com o ConfiguraçãoRemote Debug Watch
adicionada antes. O aplicativo é Agora em execução e detectando solicitações HTTP na porta9000
.Figura 3. O aplicativo está em execução e detectando HTTP solicitações na porta
9000
.
- Em uma nova janela, abra a pasta
Inicie o aplicativo
ngrok
no seu ambiente local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000
Substitua
NGROK_STATIC_DOMAIN
pelo domínio estático em sua contangrok
. Todas as solicitações agora são redirecionadas ao seu local e a porta usada pelo aplicativo.Figura 4. O terminal com o servidor do
ngrok
em execução e redirecionando.Uma interface da Web também é iniciada no localhost pelo
ngrok
. você pode monitorar todas as atividades abrindo-o em um navegador.Figura 5. A interface da Web hospedada pelo aplicativo
ngrok
sem mostrar solicitações HTTP.Teste seu complemento do Google Workspace visualizando o URL de um caso em uma nova Documento Google com uma conta de testador:
Crie um novo documento Google.
Digite o seguinte link e pressione
enter
:https://example.com/support/case/?name=Name1&description=Description1&priority=P1
Clique no link.
No
Visual Studio Code
do seu ambiente local, é possível observar que a execução é pausada no ponto de interrupção definido.Figura 6. A execução é pausada no ponto de interrupção definido.
Quando você retomar a execução do depurador de
Visual Studio Code
antes que os complementos do Google Workspace expirem o tempo limite do complemento do Google Workspace. exibe a visualização do link no arquivo do Documentos Google armazenado em cache.É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedado pelo aplicativo
ngrok
no seu ambiente local.Figura 7. A solicitação HTTP da interface da Web hospedada pelo
ngrok
.Para mudar o comportamento do aplicativo, substitua
Case
porCase:
inline78
do arquivoCreateLinkPreview.java
, reinicie omvnDebug
processo e reinicieRemote Debug Watch
para reanexar e reiniciar depuração.Desta vez, em vez de clicar no link e aguardar alguns segundos um novo documento Google, poderá selecionar a última solicitação HTTP registrada na Web de interface hospedada pelo aplicativo
ngrok
no seu ambiente local e clique emReplay
. Igual à última vez, seu complemento do Google Workspace não responde porque está sendo depurado ativamente.Quando você retomar a execução do depurador de
Visual Studio Code
como podemos ver na interface da Web hospedada pelo aplicativongrok
em seu ambiente local para o qual o aplicativo gera uma resposta a versão atualizada do card de visualização.
Depurar a partir do ambiente remoto
Nesta seção, você vai interagir com um complemento do Google Workspace que é executado em um ambiente remoto.
Figura 9. Depurar do ambiente remoto.
Pré-requisitos
- Seu complemento do Google Workspace foi implantado e instalado.
- O aplicativo em execução no ambiente remoto com o depurador
ativado em uma determinada porta, ele é referenciado como
REMOTE_DEBUG_PORT
nas instruções deste guia. - O ambiente local pode
ssh
para o ambiente remoto. - Um ambiente de desenvolvimento integrado configurado no ambiente local para depuração. Usamos o
Visual Studio Code
IDE e os respectivos de depuração nessa para fins ilustrativos.
Conecte seus ambientes local e remoto
No ambiente local a partir do qual você quer iniciar um cliente de depuração configure um túnel SSH:
ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS
Substitua:
LOCAL_DEBUG_PORT
: a porta de depuração no seu diretório local de nuvem.REMOTE_USERNAME
: o nome de usuário no ambiente remoto.REMOTE_ADDRESS
: o endereço do ambiente remoto.REMOTE_DEBUG_PORT
: a porta de depuração no controle remoto de nuvem.
A porta de depuração no seu ambiente local agora está vinculada à porta de depuração do seu ambiente remoto.
Começar a depurar
No ambiente de desenvolvimento integrado Visual Studio Code
instalado no ambiente local, faça o
seguintes:
- Em uma nova janela, abra o código-fonte do app.
Crie o arquivo
.vscode/launch.json
no diretório raiz e configure um inicialização chamadaDebug Remote
, que é anexada à porta de depuração no de nuvem: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 }] }
Substitua
LOCAL_DEBUG_PORT
pela porta de depuração no no ambiente local.Adicionar um ponto de interrupção no código-fonte do app que pause a solicitação HTTP e começar a executar depuração com a configuração
Debug Remote
adicionada antes.
Interaja com o complemento do Google Workspace instalado. Seu
O complemento do Google Workspace não responde porque está sendo usado
depurado
no ambiente de desenvolvimento integrado Visual Studio Code
.
Temas relacionados
Saiba como consultar registros de erros.