Настройка проекта скрипта приложений

Для настройки проекта Apps Script для прямого вызова API Google Forms через REST-запрос необходимо выполнить несколько шагов. Предполагая, что у вас уже настроен проект Google Cloud, выполните следующие действия:

  1. Создайте новый проект Apps Script.
  2. Измените номер соответствующего проекта Google Cloud на номер проекта, который вы включили для Forms API.
  3. Отредактируйте файл Manifest ( appsscript.json ), чтобы добавить необходимые области действия OAuth.
  4. Добавьте код Apps Script для получения токена OAuth и выполнения REST-запроса с использованием этого токена.

Создайте и настройте новый проект Apps Script.

  1. Используя ту же учетную запись Google, которую вы использовали для настройки проекта Google Cloud, перейдите на панель управления Apps Script , а затем нажмите «Создать проект» .
  2. После открытия проекта нажмите «Настройки проекта».
  3. Установите флажок «Показать файл манифеста "appsscript.json" в редакторе» .
  4. В разделе «Проект Google Cloud Platform (Google Cloud)» нажмите «Изменить проект» и введите номер проекта Google Cloud, который вы настроили для Forms API.

Теперь ваш проект Apps Script настроен для доступа к API форм. Следующий необходимый шаг — добавление соответствующих областей действия OAuth.

Добавить области действия OAuth

Для генерации корректно настроенного токена OAuth в Apps Script необходимо указать требуемые области действия в файле манифеста проекта.

  1. В редакторе откройте appsscript.json .
  2. Добавьте области действия (scopes) в тело манифеста.

    {
      ...
    "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. Нажмите Сохраните проект и исправьте синтаксические ошибки, если это необходимо. Теперь ваш проект должен иметь возможность вызывать API форм с помощью REST-запроса.

Добавьте код Apps Script для вызова API.

Прежде чем писать код для вызова формы, необходимо определить принадлежащую вам форму, которая принимает ответы, и записать её идентификатор (ID). Идентификатор формы можно найти в URL-адресе при редактировании формы:

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

Для вызова API вам потребуется использовать вызов UrlFetchApp из Apps Script.

  1. Откройте файл Code.gs и добавьте следующий код:

    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. Замените YOUR_FORM_ID значением, которое вы записали ранее.

    Пример: var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';

  3. Нажмите Сохраните проект и при необходимости исправьте синтаксические ошибки.

Протестируйте код

  1. Нажмите кнопку ».
  2. При необходимости авторизуйте проект, используя ту же учетную запись Google, что и раньше.

После запуска в журнале выполнения должен отобразиться примерно такой ответ:

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

Следующие шаги

После успешного вызова API с помощью Apps Script, ознакомьтесь с документацией и поэкспериментируйте с другими вызовами API.