Apps Script プロジェクトを設定する

REST 呼び出しを介して Google Form API を直接呼び出すように Apps Script プロジェクトをセットアップするのは簡単です。Google Cloud プロジェクトがすでに構成されている場合は、次の操作を行います。

  1. 新しい Apps Script プロジェクトを作成します。
  2. Google フォーム API を有効にしたプロジェクトと一致するように、関連付けられている Google Cloud プロジェクト番号を変更します。
  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)Project] セクションで、[プロジェクトを変更] をクリックし、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 を開き、次のコードを追加します。

    form-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 の呼び出しを試します。