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)と同じです。
おしまい。。