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

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

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

Вот краткое пошаговое руководство по этим шагам.

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

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

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

Добавить области OAuth

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

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

    {
      ...
    "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 Google Forms через REST-вызов.

Добавьте код скрипта приложения для вызова API

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

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

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

  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.