Como desenvolvedor de complementos do Google Workspace, talvez você precise depurar o código para testar mudanças ou solucionar problemas complexos. A depuração de complementos do Google Workspace pode ser feita de várias formas, dependendo da arquitetura do seu app, da função dele, da forma como o app é implantado e das suas preferências.
Esta página explica como depurar um complemento HTTP do Google Workspace usando o ngrok, uma plataforma unificada de entrada que pode ser usada para testar ambientes de desenvolvimento local. Neste guia, você vai testar as mudanças no código em um ambiente local e resolver problemas em um ambiente remoto.
Depurar do ambiente de desenvolvimento local
Nesta seção, você vai interagir com o complemento do Google Workspace que é executado no seu ambiente local.
Pré-requisitos
Node.js
- As versões mais recentes do
nodee donpminstaladas no seu ambiente local. A versão mais recente do
nodemoninstalada no seu ambiente local. Ele é usado para recarga automática:npm install -g nodemonUm projeto do Google Cloud. Siga as seções Pré-requisitos e Configurar o ambiente do Guia de início rápido.
O código do complemento do Google Workspace para depurar no seu ambiente local. Usamos os recursos de link de visualização do exemplo de código
3p-resourcesdo repositório do GitHubgoogleworkspace/add-ons-samplesneste guia para fins ilustrativos.Um ambiente de desenvolvimento integrado configurado no seu ambiente local que pode depurar. Usamos o IDE
Visual Studio Codee os recursos de depuração padrão neste guia para fins ilustrativos.Uma conta do
ngrok.A versão mais recente do
gcloudinstalada e inicializada no seu ambiente local.
Python
- A versão mais recente do
python3instalada no seu ambiente local. - A versão mais recente do
pipe dovirtualenvinstalada no seu ambiente local. Eles são usados para gerenciar pacotes Python e ambientes virtuais, respectivamente. - Um projeto do Google Cloud. Siga as seções Pré-requisitos e Configurar o ambiente do Guia de início rápido.
- O código do complemento do Google Workspace para depurar no seu ambiente
local. Usamos os recursos de link de visualização do exemplo de código
3p-resourcesdo repositório do GitHubgoogleworkspace/add-ons-samplesneste guia para fins ilustrativos. - Um ambiente de desenvolvimento integrado configurado no seu ambiente local que pode depurar. Usamos o
IDE
Visual Studio Codee os recursos de depuração padrão neste guia para fins ilustrativos. - Uma conta do
ngrok. - A versão mais recente do
gcloudinstalada e inicializada no seu ambiente local.
Java
- A versão estável mais recente do
Java SE 11's JDKinstalado no seu ambiente local. - A versão mais recente do
Apache Maveninstalada no seu ambiente local. Ele é usado para gerenciar projetos Java. - Um projeto do Google Cloud. Siga as seções Pré-requisitos e Configurar o ambiente do Guia de início rápido.
- O código do complemento do Google Workspace para depurar no seu ambiente
local. Usamos os recursos de link de visualização do exemplo de código
3p-resourcesdo repositório do GitHubgoogleworkspace/add-ons-samplesneste guia para fins ilustrativos. - Um ambiente de desenvolvimento integrado configurado no seu ambiente local que pode depurar. Usamos o
IDE
Visual Studio Codee os recursos de depuração padrão neste guia para fins ilustrativos. - Uma conta do
ngrok. - A versão mais recente do
gcloudinstalada e inicializada no seu ambiente local.
Disponibilizar o serviço localhost publicamente
Você precisa conectar seu ambiente local à Internet para que o
complemento do Google Workspace possa acessá-lo. O aplicativo ngrok é usado para
redirecionar solicitações HTTP feitas a um URL público para seu ambiente local.
- Em um navegador no seu ambiente local, faça login na sua conta do
ngrok. - Instale o aplicativo e configure o
authtokenno ambiente local. - Crie um domínio estático na sua
conta do
ngrok. Ele é referenciado comoNGROK_STATIC_DOMAINnas instruções deste guia.
Criar e instalar a implantação do complemento
Configure o complemento do Google Workspace para enviar todas as solicitações HTTP ao domínio estático. O arquivo de implantação vai ficar assim:
{ "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" } } }Substitua
NGROK_STATIC_DOMAINpelo domínio estático na sua conta dongrok.Defina o projeto na nuvem do Google Cloud a ser usado:
gcloud config set project PROJECT_IDAdquira novas credenciais de usuário para usar no Application Default Credentials:
gcloud auth application-default loginSubstitua
PROJECT_IDpelo ID do projeto do Google Cloud do app.Crie a implantação:
gcloud workspace-add-ons deployments create manageSupportCases \ --deployment-file=DEPLOYMENT_FILE_PATHSubstitua
DEPLOYMENT_FILE_PATHpelo caminho do arquivo de implantação.Instale a implantação:
gcloud workspace-add-ons deployments install manageSupportCasesFigura 2. O complemento do Google Workspace envia todas as solicitações HTTP para o domínio estático. O serviço público "ngrok" funciona como uma ponte entre o complemento do Google Workspace e o código do aplicativo que é executado localmente.
Testar o complemento do Google Workspace
É possível implantar, testar, depurar e recarregar automaticamente seu complemento do Google Workspace localmente.
Node.js
No ambiente de desenvolvimento integrado
Visual Studio Codeinstalado no seu ambiente local, faça o seguinte:- Em uma nova janela, abra a pasta
add-ons-samples/node/3p-resources. Configure o aplicativo para execução local e depuração de recarga automática 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 installCrie e configure uma inicialização chamada
Debug Watchque aciona o scriptdebug-watchcriando o arquivo.vscode/launch.jsonno 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 pause o processamento da solicitação HTTP no arquivo
index.jse comece a executar e depurar com a configuraçãoDebug Watchadicionada antes. O aplicativo está em execução e detectando solicitações HTTP na porta9000.
Figura 3. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.
- Em uma nova janela, abra a pasta
Inicie o aplicativo
ngrokno ambiente local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Substitua
NGROK_STATIC_DOMAINpelo domínio estático na sua conta dongrok. Todas as solicitações agora são redirecionadas para seu ambiente local e a porta usada pelo aplicativo.
Figura 4. O terminal com o servidor ngrokem execução e redirecionando.Uma interface da Web também é iniciada no seu host local pelo aplicativo
ngrok. É possível monitorar todas as atividades abrindo o painel em um navegador.
Figura 5. A interface da Web hospedada pelo aplicativo ngroknão mostra solicitações HTTP.Teste seu complemento do Google Workspace visualizando o URL de um caso em um novo Documento Google com uma conta de teste:
Crie um documento Google.
Digite o seguinte link e pressione
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Clique no link.
No
Visual Studio Codedo seu ambiente local, é possível ver que a execução está pausada no ponto de interrupção definido.
Figura 6. A execução é pausada no ponto de interrupção definido. Quando você retoma a execução do depurador
Visual Studio Codeantes do tempo limite dos complementos do Google Workspace, o complemento mostra a prévia do link no Google Docs do cache.É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedada pelo aplicativo
ngrokno seu ambiente local.
Figura 7. A solicitação HTTP da interface da Web hospedada pelo aplicativo ngrok.Para mudar o comportamento do aplicativo, substitua
CaseporCase:na linha51doindex.js. Quando você salva o arquivo, onodemonrecarrega automaticamente o aplicativo com o código-fonte atualizado, e oVisual Studio Codepermanece no modo de depuração.
Figura 8. O aplicativo está em execução e detectando solicitações HTTP na porta 9000com a mudança de código carregada.Desta vez, em vez de clicar no link e esperar alguns segundos em um novo Google Docs, selecione a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo
ngrokno seu ambiente local e clique emReplay. Assim como da última vez, seu complemento do Google Workspace não responde porque está sendo depurado.Ao retomar a execução do depurador
Visual Studio Code, você pode ver na interface da Web hospedada pelo aplicativongrokno ambiente local que o aplicativo gera uma resposta com a versão atualizada do card de prévia.
Python
No ambiente de desenvolvimento integrado
Visual Studio Codeinstalado no seu ambiente local, faça o seguinte:- Em uma nova janela, abra a pasta
add-ons-samples/python/3p-resources/create_link_preview. Crie e ative um ambiente virtual para Python
env:virtualenv envsource env/bin/activateInstale todas as dependências do projeto usando
pipno ambiente virtual:pip install -r requirements.txtCrie o arquivo
.vscode/launch.jsonno diretório raiz e configure um lançamento chamadoDebug Watchque aciona o aplicativo do módulofunctions-frameworkna porta9000no 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 pause o processamento da solicitação HTTP no arquivo
main.pye comece a executar e depurar com a configuraçãoDebug Watchadicionada antes. O aplicativo está em execução e detectando solicitações HTTP na porta9000.
Figura 3. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.
- Em uma nova janela, abra a pasta
Inicie o aplicativo
ngrokno ambiente local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Substitua
NGROK_STATIC_DOMAINpelo domínio estático na sua conta dongrok. Todas as solicitações agora são redirecionadas para seu ambiente local e a porta usada pelo aplicativo.
Figura 4. O terminal com o servidor ngrokem execução e redirecionando.Uma interface da Web também é iniciada no seu host local pelo aplicativo
ngrok. Monitore todas as atividades abrindo-as em um navegador.
Figura 5. A interface da Web hospedada pelo aplicativo ngroknão mostra solicitações HTTP.Teste seu complemento do Google Workspace visualizando o URL de um caso em um novo Documento Google com uma conta de teste:
Crie um documento Google.
Digite o seguinte link e pressione
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Clique no link.
No
Visual Studio Codedo seu ambiente local, é possível ver que a execução está pausada no ponto de interrupção definido.
Figura 6. A execução é pausada no ponto de interrupção definido. Quando você retoma a execução do depurador
Visual Studio Codeantes do tempo limite dos complementos do Google Workspace, o complemento mostra a prévia do link no Google Docs do cache.É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedada pelo aplicativo
ngrokno seu ambiente local.
Figura 7. A solicitação HTTP da interface da Web hospedada pelo aplicativo ngrok.Para mudar o comportamento do aplicativo, substitua
CaseporCase:na linha56do arquivomain.py. Quando você salva o arquivo, oVisual Studio Coderecarrega 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 detectando solicitações HTTP na porta 9000com a mudança de código carregada.Desta vez, em vez de clicar no link e esperar alguns segundos em um novo Google Docs, selecione a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo
ngrokno seu ambiente local e clique emReplay. Assim como da última vez, seu complemento do Google Workspace não responde porque está sendo depurado.Ao retomar a execução do depurador
Visual Studio Code, você pode ver na interface da Web hospedada pelo aplicativongrokno ambiente local que o aplicativo gera uma resposta com a versão atualizada do card de prévia.
Java
No ambiente de desenvolvimento integrado
Visual Studio Codeinstalado no seu ambiente local, faça o seguinte:- Em uma nova janela, abra a pasta
add-ons-samples/java/3p-resources. Configure o projeto do Maven para executar o aplicativo
CreateLinkPreviewna porta9000localmente adicionando o plug-in de build do Framework de funções do Cloudfunction-maven-pluginao 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: 8000Crie o arquivo
.vscode/launch.jsonno diretório raiz e configure um lançamento chamadoRemote Debug Watchque se conecta ao aplicativo lançado anteriormente na 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 pause o processamento da solicitação HTTP no arquivo
CreateLinkPreview.javae comece a anexar e depurar com a configuraçãoRemote Debug Watchadicionada anteriormente. O aplicativo está em execução e detectando solicitações HTTP na porta9000.
Figura 3. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.
- Em uma nova janela, abra a pasta
Inicie o aplicativo
ngrokno ambiente local:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Substitua
NGROK_STATIC_DOMAINpelo domínio estático na sua conta dongrok. Todas as solicitações agora são redirecionadas para seu ambiente local e a porta usada pelo aplicativo.
Figura 4. O terminal com o servidor ngrokem execução e redirecionando.Uma interface da Web também é iniciada no seu host local pelo aplicativo
ngrok. Monitore todas as atividades abrindo-as em um navegador.
Figura 5. A interface da Web hospedada pelo aplicativo ngroknão mostra solicitações HTTP.Teste seu complemento do Google Workspace visualizando o URL de um caso em um novo Documento Google com uma conta de teste:
Crie um documento Google.
Digite o seguinte link e pressione
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Clique no link.
No
Visual Studio Codedo seu ambiente local, é possível ver que a execução está pausada no ponto de interrupção definido.
Figura 6. A execução é pausada no ponto de interrupção definido. Quando você retoma a execução do depurador
Visual Studio Codeantes do tempo limite dos complementos do Google Workspace, o complemento mostra a prévia do link no Google Docs do cache.É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedada pelo aplicativo
ngrokno seu ambiente local.
Figura 7. A solicitação HTTP da interface da Web hospedada pelo aplicativo ngrok.Para mudar o comportamento do aplicativo, substitua
CaseporCase:na linha78do arquivoCreateLinkPreview.java, reinicie o processomvnDebuge reinicieRemote Debug Watchpara reconectar e reiniciar a depuração.Desta vez, em vez de clicar no link e esperar alguns segundos em um novo Google Docs, selecione a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo
ngrokno seu ambiente local e clique emReplay. Assim como da última vez, seu complemento do Google Workspace não responde porque está sendo depurado.Ao retomar a execução do depurador
Visual Studio Code, você pode ver na interface da Web hospedada pelo aplicativongrokno ambiente local que o aplicativo gera uma resposta com a versão atualizada do card de prévia.
Depurar de um ambiente remoto
Nesta seção, você vai interagir com o complemento do Google Workspace que é executado em um ambiente remoto.
Pré-requisitos
- Seu complemento do Google Workspace é implantado e instalado.
- O aplicativo está sendo executado no ambiente remoto com o depurador
ativado em uma determinada porta, e ele é referenciado como
REMOTE_DEBUG_PORTnas instruções deste guia. - Seu ambiente local pode
sshpara o ambiente remoto. - Um ambiente de desenvolvimento integrado (IDE) configurado no seu ambiente local que pode depurar. Usamos o
Visual Studio CodeIDE e os recursos de depuração padrão neste guia para fins ilustrativos.
Conectar ambientes locais e remotos
No ambiente local em que você quer iniciar uma conexão de cliente de depuração, configure um túnel SSH:
ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESSSubstitua:
LOCAL_DEBUG_PORT: a porta de depuração no ambiente local.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 seu ambiente remoto.
A porta de depuração no ambiente local agora está vinculada à porta de depuração no ambiente remoto.
Começar a depurar
No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:
- Em uma nova janela, abra o código-fonte do app.
Crie o arquivo
.vscode/launch.jsonno diretório raiz e configure um lançamento chamadoDebug Remoteque se conecta à porta de depuração no seu ambiente 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 }] }Substitua
LOCAL_DEBUG_PORTpela porta de depuração no seu ambiente local.Adicione um ponto de interrupção no código-fonte do app que pausa o processamento da solicitação HTTP e comece a executar e depurar com a configuração
Debug Remoteadicionada antes.Interaja com o complemento do Google Workspace instalado. Seu complemento do Google Workspace não responde porque está sendo depurado ativamente no ambiente de desenvolvimento integrado (IDE)
Visual Studio Code.
Temas relacionados
- Saiba como consultar registros de erros.