Configurar um projeto do Apps Script

Configurar um projeto do Apps Script para chamar a API Google Forms diretamente por uma chamada REST é simples. Supondo que você já tenha configurado um projeto do Google Cloud, faça o seguinte:

  1. Crie um novo projeto do Apps Script.
  2. Mude o número do projeto associado do Google Cloud para corresponder ao projeto que você ativou para a API Google Forms.
  3. Edite o arquivo de manifesto (appsscript.json) para adicionar os escopos OAuth necessários.
  4. Adicione o código do Apps Script para buscar um token OAuth e fazer uma chamada REST usando o token.

Confira um tutorial rápido dessas etapas.

Criar e configurar um projeto do Apps Script

  1. Usando o mesmo ID do Google com que você configurou seu projeto do GCP, acesse o Painel do Apps Script e clique em Novo projeto.
  2. Com o projeto aberto, clique em Configurações do projeto.
  3. Selecione a caixa de seleção Mostrar arquivo de manifesto "appsscript.json" no editor.
  4. Na seção Projeto do Google Cloud Platform (GCP), clique em Mudar projeto e insira o número do projeto do GCP que você configurou para a API Forms.

Seu projeto do Apps Script agora está configurado para acessar a API Google Forms. A próxima etapa obrigatória é adicionar os escopos OAuth adequados.

Adicionar escopos do OAuth

Para gerar um token do OAuth com escopo adequado no Apps Script, defina os escopos necessários no arquivo de manifesto do projeto.

  1. No editor, abra appsscript.json.
  2. Adicione os escopos ao corpo do manifesto.

    {
      ...
    "oauthScopes": [
        "https://www.googleapis.com/auth/script.external_request",
        "https://www.googleapis.com/auth/drive",
        "https://www.googleapis.com/auth/drive.readonly",
        "https://www.googleapis.com/auth/forms.body",
        "https://www.googleapis.com/auth/forms.body.readonly",
        "https://www.googleapis.com/auth/forms.responses.readonly"
      ],
     ...
     }
    
  3. Clique em Salvar projeto e corrija os erros de sintaxe, se necessário. Agora seu projeto pode chamar a API Google Forms com uma chamada REST.

Adicionar código do Apps Script para chamar a API

Antes de escrever o código para chamar um formulário, identifique um formulário com respostas que seja de sua propriedade e anote o ID dele. O ID do formulário pode ser encontrado no URL ao editar o formulário:

https://docs.google.com/forms/d/<FORM_ID>/edit

Para chamar a API, você vai usar uma chamada UrlFetchApp do Apps Script.

  1. Abra Code.gs e adicione o seguinte código:

    forms-api/snippets/retrieve_all_responses.gs
     function callFormsAPI() {
      console.log('Calling the Forms API!');
      const formId = '<YOUR_FORM_ID>';
    
      // Get OAuth Token
     const OAuthToken = ScriptApp.getOAuthToken();
     console.log('OAuth token is: ' + OAuthToken);
     const formsAPIUrl = 'https://forms.googleapis.com/v1/forms/' + formId + '/' + 'responses';
     console.log('formsAPIUrl is: ' + formsAPIUrl);
     const options = {
        'headers': {
          Authorization: 'Bearer ' + OAuthToken,
          Accept: 'application/json'
        },
        'method': 'get'
      };  
    const response = UrlFetchApp.fetch(formsAPIUrl, options);
     console.log('Response from forms.responses was: ' + response);
    }
  2. Substitua YOUR_FORM_ID pelo valor que você anotou anteriormente.

    Exemplo: var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';

  3. Clique em Salvar projeto e corrija os erros de sintaxe, se necessário.

Testar o código

  1. Clique em Executar.
  2. Autorize o projeto conforme necessário usando o mesmo ID do Google de antes.

Quando ele for iniciado, você vai ver uma resposta no Registro de execução semelhante a esta:

Execution started
Calling the Forms API!
OAuth token is: ya29.a0ARrdaM8IMjtlv…
formsAPIUrl is: https://forms.googleapis.com/v1beta/forms/…/responses
Response from Forms.responses was: {
"responses": [
    {
      "responseId":"...",
      "createTime": "2021-03-25T01:23:58.146Z",
      "lastSubmittedTime": "2021-03-25T01:23:58.146607Z",
      "answers": {
        "1e9b0ead": {
          "questionId": "1e9b0ead",
          "textAnswers": {
            "answers": [
              {
                "value": "Red"
              }
            ]
          }
        },
        "773ed8f3": {
          "questionId": "773ed8f3",
          "textAnswers": {
            "answers": [
              {
                "value": "Tesla"
              }
            ]
          }
        }
      }
    }
  ]
}
Execution completed

Próximas etapas

Depois de chamar a API com o Apps Script, consulte a documentação de referência e faça outros testes de chamadas para a API.