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 do Google Cloud associado para corresponder ao projeto que você ativou para a API Google Forms.
  3. Edite o arquivo de manifesto (appsscript.json) para adicionar os escopos necessários do OAuth.
  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 novo 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. Quando o projeto estiver 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.

Agora seu projeto do Apps Script está configurado para acessar a API Google Forms. A próxima etapa necessária é adicionar os escopos OAuth corretos.

Adicionar escopos do OAuth

Para gerar um token OAuth com escopo adequado no Apps Script, é necessário definir 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 o código do Apps Script para chamar a API

Antes de escrever o código para chamar um formulário, você precisa identificar um formulário que pertence a você e tem respostas e anotar 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, use 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!');
      var formId = '<YOUR_FORM_ID>';
    
      // Get OAuth Token
     var OAuthToken = ScriptApp.getOAuthToken();
     console.log('OAuth token is: ' + OAuthToken);
     var formsAPIUrl = 'https://forms.googleapis.com/v1/forms/' + formId + '/' + 'responses';
     console.log('formsAPIUrl is: ' + formsAPIUrl);
     var options = {
        'headers': {
          Authorization: 'Bearer ' + OAuthToken,
          Accept: 'application/json'
        },
        'method': 'get'
      };  
    var 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 Save project e corrija 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.

Depois que ele for iniciado, uma resposta semelhante a esta vai aparecer no Registro de execução:

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 outras chamadas para a API.