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