Testar e depurar complementos HTTP do Google Workspace

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.

Depurar a partir do desenvolvimento local
meio ambiente

Figura 1. Depurar em um ambiente de desenvolvimento local.

Pré-requisitos

Node.js

Python

Java

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.

  1. Em um navegador no seu ambiente local, faça login na conta ngrok.
  2. Instale o aplicativo e configure o authtoken no seu local de nuvem.
  3. Crie um domínio estático no seu ngrok, é referenciada como NGROK_STATIC_DOMAIN nas instruções deste guia.

Criar e instalar a implantação de complementos

  1. 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 seu ngrok conta.

  2. Defina o projeto do Google Cloud a ser usado:

    gcloud config set project PROJECT_ID
    
  3. 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.

  4. 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.

  5. Instale a implantação:

    gcloud workspace-add-ons deployments install manageSupportCases
    

O complemento do Google Workspace envia todas as solicitações HTTP para o
domínio estático

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

  1. No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:

    1. Em uma nova janela, abra a pasta add-ons-samples/node/3p-resources:
    2. 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"
          }
          ...
      }
      
    3. No diretório raiz, instale o aplicativo:

      npm install
      
    4. Crie e configure uma inicialização chamada Debug Watch que acione o script debug-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"]
          }]
      }
      
    5. 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ção Debug Watch adicionada antes. Agora o aplicativo está executar e detectar solicitações HTTP na porta 9000.

      O aplicativo está em execução e recebendo solicitações HTTP no
porta `9000`

      Figura 3. O aplicativo está em execução e detectando HTTP solicitações na porta 9000.

  2. 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 conta ngrok. Todas as solicitações agora são redirecionadas ao seu local e a porta usada pelo aplicativo.

    O terminal com o servidor "ngrok" em execução e
redirecionando

    Figura 4. O terminal com o servidor do ngrok em execução e redirecionando.

  3. Uma interface da Web também é iniciada no localhost pelo ngrok. você pode monitorar todas as atividades abrindo-o em um navegador.

    A interface da Web hospedada pelo aplicativo "ngrok" sem mostrar HTTP
solicitações

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok sem mostrar solicitações HTTP.

  4. 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.

      Criar 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.

  5. No Visual Studio Code do seu ambiente local, é possível observar que a execução é pausada no ponto de interrupção definido.

    A execução é pausada no ponto de interrupção que foi
desencadear

    Figura 6. A execução é pausada no ponto de interrupção definido.

  6. 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.

  7. É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedado pelo aplicativo ngrok no seu ambiente local.

    A solicitação HTTP da interface da Web hospedada pelo `ngrok`
aplicativo

    Figura 7. A solicitação HTTP da interface da Web hospedada pelo ngrok.

  8. Para mudar o comportamento do aplicativo, substitua Case por Case: inline 51 de index.js. Quando você salvar o arquivo, nodemon automaticamente recarrega o aplicativo com o código-fonte atualizado e Visual Studio Code permanece no modo de depuração.

    O aplicativo está em execução e recebendo solicitações HTTP na porta
`9000` com a mudança no código
carregado

    Figura 8. O aplicativo está em execução e recebendo solicitações HTTP na porta 9000 com a mudança de código carregada.

  9. 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 em Replay. Igual à última vez, seu complemento do Google Workspace não responde porque está sendo depurado ativamente.

  10. Quando você retomar a execução do depurador de Visual Studio Code como podemos ver na interface da Web hospedada pelo aplicativo ngrok em seu ambiente local para o qual o aplicativo gera uma resposta a versão atualizada do card de visualização.

Python

  1. No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:

    1. Em uma nova janela, abra a pasta add-ons-samples/python/3p-resources/create_link_preview:
    2. Crie um novo ambiente virtual para o Python env e ative-o:

      virtualenv env
      source env/bin/activate
      
    3. Instale todas as dependências do projeto usando pip na VM de nuvem:

      pip install -r requirements.txt
      
    4. Crie o arquivo .vscode/launch.json no diretório raiz e configure uma inicialização chamada Debug Watch que aciona o aplicativo do módulo functions-framework na porta 9000 no modo de depuração no ambiente 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. 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ção Debug Watch adicionada anteriormente. Agora o aplicativo está executar e detectar solicitações HTTP na porta 9000.

      O aplicativo está em execução e recebendo solicitações HTTP no
porta `9000`

      Figura 3. O aplicativo está em execução e detectando HTTP solicitações na porta 9000.

  2. 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 conta ngrok. Todas as solicitações agora são redirecionadas ao seu local e a porta usada pelo aplicativo.

    O terminal com o servidor "ngrok" em execução e
redirecionando

    Figura 4. O terminal com o servidor do ngrok em execução e redirecionando.

  3. Uma interface da Web também é iniciada no localhost pelo ngrok. você pode monitorar todas as atividades abrindo-o em um navegador.

    A interface da Web hospedada pelo aplicativo "ngrok" sem mostrar HTTP
solicitações

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok sem mostrar solicitações HTTP.

  4. 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.

      Criar 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.

  5. No Visual Studio Code do seu ambiente local, é possível observar que a execução é pausada no ponto de interrupção definido.

    A execução é pausada no ponto de interrupção que foi
desencadear

    Figura 6. A execução é pausada no ponto de interrupção definido.

  6. 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.

  7. É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedado pelo aplicativo ngrok no seu ambiente local.

    A solicitação HTTP da interface da Web hospedada pelo `ngrok`
aplicativo

    Figura 7. A solicitação HTTP da interface da Web hospedada pelo ngrok.

  8. Para mudar o comportamento do aplicativo, substitua Case por Case: inline 56 do arquivo main.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.

    O aplicativo está em execução e recebendo solicitações HTTP na porta
`9000` com a mudança no código
carregado

    Figura 8. O aplicativo está em execução e recebendo solicitações HTTP na porta 9000 com a mudança de código carregada.

  9. 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 em Replay. Igual à última vez, seu complemento do Google Workspace não responde porque está sendo depurado ativamente.

  10. Quando você retomar a execução do depurador de Visual Studio Code como podemos ver na interface da Web hospedada pelo aplicativo ngrok em seu ambiente local para o qual o aplicativo gera uma resposta a versão atualizada do card de visualização.

Java

  1. No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:

    1. Em uma nova janela, abra a pasta add-ons-samples/java/3p-resources:
    2. Configurar o projeto Maven para executar o aplicativo CreateLinkPreview na porta 9000 localmente adicionando o Cloud Plug-in de build function-maven-plugin do Functions Framework no Arquivo 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. 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
      
    4. Crie o arquivo .vscode/launch.json no diretório raiz e configure uma inicialização chamada Remote Debug Watch que é anexada ao aplicativo iniciado anteriormente com a porta 8000:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "java",
              "request": "attach",
              "name": "Remote Debug Watch",
              "projectName": "http-function",
              "hostName": "localhost",
              "port": 8000
          }]
      }
      
    5. 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ção Remote Debug Watch adicionada antes. O aplicativo é Agora em execução e detectando solicitações HTTP na porta 9000.

      O aplicativo está em execução e recebendo solicitações HTTP no
porta `9000`

      Figura 3. O aplicativo está em execução e detectando HTTP solicitações na porta 9000.

  2. 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 conta ngrok. Todas as solicitações agora são redirecionadas ao seu local e a porta usada pelo aplicativo.

    O terminal com o servidor &quot;ngrok&quot; em execução e
redirecionando

    Figura 4. O terminal com o servidor do ngrok em execução e redirecionando.

  3. Uma interface da Web também é iniciada no localhost pelo ngrok. você pode monitorar todas as atividades abrindo-o em um navegador.

    A interface da Web hospedada pelo aplicativo &quot;ngrok&quot; sem mostrar HTTP
solicitações

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok sem mostrar solicitações HTTP.

  4. 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.

      Criar 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.

  5. No Visual Studio Code do seu ambiente local, é possível observar que a execução é pausada no ponto de interrupção definido.

    A execução é pausada no ponto de interrupção que foi
desencadear

    Figura 6. A execução é pausada no ponto de interrupção definido.

  6. 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.

  7. É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedado pelo aplicativo ngrok no seu ambiente local.

    A solicitação HTTP da interface da Web hospedada pelo `ngrok`
aplicativo

    Figura 7. A solicitação HTTP da interface da Web hospedada pelo ngrok.

  8. Para mudar o comportamento do aplicativo, substitua Case por Case: inline 78 do arquivo CreateLinkPreview.java, reinicie o mvnDebug processo e reinicie Remote Debug Watch para reanexar e reiniciar depuração.

  9. 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 em Replay. Igual à última vez, seu complemento do Google Workspace não responde porque está sendo depurado ativamente.

  10. Quando você retomar a execução do depurador de Visual Studio Code como podemos ver na interface da Web hospedada pelo aplicativo ngrok 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.

Depurar a partir do controle remoto
meio ambiente

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:

  1. Em uma nova janela, abra o código-fonte do app.
  2. Crie o arquivo .vscode/launch.json no diretório raiz e configure um inicialização chamada Debug 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.

  3. 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.

Saiba como consultar registros de erros.