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

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

  1. 新しい Apps Script プロジェクトを作成します。
  2. 関連付けられている Google Cloud プロジェクト番号を、Google フォーム 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 フォーム 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 フォーム 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!');
      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 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 への他の呼び出しを試してください。