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

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

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

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

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

これで、Apps Script プロジェクトが 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 呼び出しを使用して 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!");
      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

次のステップ

Apps Script で API の呼び出しに成功したら、リファレンス ドキュメントを参照して、API への他の呼び出しを試してください。