0
1

[Google Forms API(V1)] JavaでGoogleフォームの回答を取得する

Posted at

Google Forms API V1(Java)を使用して、
Googleフォームの回答を取得する方法
についてご紹介します。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Forms API(V1)] JavaでForms APIを使う
を参照ください。

No 目次
1 回答一覧を取得
1 スコープ
2 実行
3 レスポンスの内容
2 回答を取得
1 スコープ
2 実行
3 レスポンスの内容

1. 回答一覧を取得

指定したGoogleフォームの回答一覧を取得します。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

FormsScopes.DRIVE
FormsScopes.DRIVE_FILE
FormsScopes.FORMS_RESPONSES_READONLY

⧉[Google Forms API(V1)] JavaでForms APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

1.2. 実行

取得したいGoogleフォームのフォームID(ファイルID)を指定します。

レスポンスのgetNextPageTokenがNULLではない場合、
全てのリストが取得できていません。
クエリパラメータのsetPageTokenに取得できた値を設定し、
再度APIを実行します。

public static void main(String[] args) throws Exception{
    Forms forms = getForms();
    Forms.FormsOperations op = forms.forms();
    Forms.FormsOperations.Responses responses = op.responses();
    Forms.FormsOperations.Responses.List list = responses.list("フォームID");

//レスポンスのgetNextPageTokenがNULLではない場合
//list.setPageToken("レスポンスのgetNextPageToken");

    ListFormResponsesResponse res = list.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

GET: https://forms.googleapis.com/v1/forms/{フォームID}/responses
が実行されます。

1.2.2. クエリパラメータ

Forms.FormsOperations.Responses.Listのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setFilter String 取得したい回答をクエリで指定
現在は「timestamp」のみサポート
setPageSize Integer 取得するレスポンスの最大数(デフォルトは5000)
setPageToken String 次のページで前のリスト要求を継続するためのトークン
レスポンスのgetNextPageTokenで取得が可能

1.3. レスポンスの内容

ListFormResponsesResponse

メソッド 戻り値 説明
getResponses List<FormResponse> フォームのレスポンス
getNextPageToken String 次のページのページトークン
リストの最後の場合はNULL

FormResponse

メソッド 戻り値 説明
getFormId String フォームID
getResponseId String レスポンスID
getCreateTime String レスポンスが初めて送信されたときのタイムスタンプ
RFC3339 UTC「Zulu」形式
getLastSubmittedTime String 回答が送信された直近のタイムスタンプ
RFC3339 UTC「Zulu」形式
getRespondentEmail String 回答者のメールアドレス
getAnswers Map<String,Answer> 質問に対する実際の回答
キーはquestionId
getTotalScore Double 回答が送信された際に回答者が獲得した合計点数

Answer

メソッド 戻り値 説明
getQuestionId String 質問ID
getGrade Grade フォームがクイズの場合の回答の成績
getTextAnswers TextAnswers テキストとしての回答
getFileUploadAnswers FileUploadAnswers ファイル アップロードに関する回答

Grade

メソッド 戻り値 説明
getScore Double 回答に対して与えられたスコア
getCorrect Boolean 質問に正解したか
getFeedback Feedback 回答に対する追加のフィードバック

Feedback

⧉[Google Forms API(V1)] GoogleフォームとFormクラス(Feedback)
を参照ください。

TextAnswers

メソッド 戻り値 説明
getAnswers List<TextAnswer> 質問への回答

TextAnswer

メソッド 戻り値 説明
getValue String 回答の値
⧉[Google Forms API(V1)] GoogleフォームとFormクラス(正解の値)
を参照ください。

FileUploadAnswers

メソッド 戻り値 説明
getAnswers List<FileUploadAnswer> 質問で送信されたすべてのファイル

FileUploadAnswer

メソッド 戻り値 説明
getFileId String GoogleドライブのファイルID
getFileName String アップロード時にGoogleドライブに保存されるファイル名
getMimeType String アップロード時にGoogleドライブに保存されるファイルのMIMEタイプ

2. 回答を取得

指定したGoogleフォームの指定した回答を取得します。

2.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

FormsScopes.DRIVE
FormsScopes.DRIVE_FILE
FormsScopes.FORMS_RESPONSES_READONLY

⧉[Google Forms API(V1)] JavaでForms APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

2.2. 実行

取得したいGoogleフォームのフォームID(ファイルID)とレスポンスIDを指定します。

レスポンスIDは、FormResponseのgetResponseId()で取得できます。

public static void main(String[] args) throws Exception{
    Forms forms = getForms();
    Forms.FormsOperations op = forms.forms();
    Forms.FormsOperations.Responses responses = op.responses();
    Forms.FormsOperations.Responses.Get get = responses.get("フォームID","レスポンスID");
    
    FormResponse res = get.execute();
    System.out.println(res);
}

2.2.1. HTTPリクエスト

GET: https://forms.googleapis.com/v1/forms/{フォームID}/responses/{レスポンスID}
が実行されます。

2.2.2. クエリパラメータ

クエリパラメータはありません。

2.3. レスポンスの内容

FormResponse

1.3. レスポンスの内容(FormResponse)と同じです。



おしまい。。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1