Apps Script プロジェクトの設定

REST 呼び出しを介して Google Forms API を直接呼び出す Apps Script プロジェクトを設定するのは簡単です。Google Cloud プロジェクトがすでに構成されていることを前提として、次の操作を行います。

  1. 新しい Apps Script プロジェクトを作成します。
  2. 関連付けられた Google Cloud プロジェクト番号を、Google Forms API 用に有効にしたプロジェクトと一致するように変更します。
  3. マニフェスト ファイル(appsscript.json)を編集して、必要な OAuth スコープを追加します。
  4. OAuth トークンを取得し、そのトークンを使用して REST 呼び出しを行う Apps Script コードを追加します。

手順は次のとおりです。

新しい Apps Script プロジェクトを作成して構成する

  1. GCP プロジェクトの構成に使用した Google ID を使用して、Apps Script ダッシュボードに移動し、[新しいプロジェクト] をクリックします。
  2. プロジェクトが開いたら、 [プロジェクトの設定] をクリックします。
  3. [「appsscript.json」マニフェスト ファイルをエディタで表示する] チェックボックスをオンにします。
  4. [Google Cloud Platform(GCP)プロジェクト] セクションで [プロジェクトを変更] をクリックし、Forms API 用に構成した GCP プロジェクト番号を入力します。

これで、Apps Script プロジェクトが Google Forms API にアクセスするように設定されました。次の必要なステップは、適切な OAuth スコープを追加することです。

OAuth スコープを追加する

Apps Script で適切なスコープの OAuth トークンを生成するには、プロジェクトのマニフェスト ファイルで必要なスコープを設定する必要があります。

  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. [ プロジェクトを保存] をクリックし、必要に応じて構文エラーを修正します。これで、プロジェクトで REST 呼び出しを介して Google Forms API を呼び出せるようになります。

API を呼び出す Apps Script のコードを追加する

フォームを呼び出すコードを記述する前に、回答がある所有しているフォームを特定し、そのフォーム ID をメモしておく必要があります。フォーム ID は、フォームを編集するときに 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!');
      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. YOUR_FORM_ID は、前にメモした値に置き換えます。

    例: var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';

  3. [プロジェクトを保存] をクリックし、必要に応じて構文エラーを修正します。

コードをテストする

  1. [ 実行] をクリックします。
  2. 必要に応じて、前と同じ Google ID を使用してプロジェクトを承認します。

開始すると、実行ログに次のようなレスポンスが表示されます。

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

次のステップ

Apps Script で API を正常に呼び出したら、リファレンス ドキュメントを参照して、API への他の呼び出しを試します。