アンケート等で使用する機会が多いGoogleフォームを、API経由で作成・編集できる「Google Forms API」が正式リリースされたので、さっそく試してみました。
事前準備
Google Cloud Platformのコンソールから「Google Forms API」を有効にしておきます。
APIの実行にはアクセストークンが必要となりますが、以前Power Automate for desktopでフローを作っていたので、そのまま使うことにしました。
(スコープ:https://www.googleapis.com/auth/drive)
フォームの作成
フォームの作成には(forms).createメソッドを使用します。
今回はFiddler ClassicのComposerでテストすることにしました。
HTTP request
POST https://forms.googleapis.com/v1/forms
Headers
Content-Type: application/json Authorization: Bearer (アクセストークン)
Request Body
{ "info": { "title": "アンケートフォーム", "documentTitle": "新規フォーム" } }
Response Body
問題なく実行された場合はフォームのIDを示す「formId」が返ってきます。後述するbatchUpdateメソッドを実行する際にこのIDが必要となります。
{ "formId": "********", "info": { "title": "アンケートフォーム", "documentTitle": "新規フォーム" }, "revisionId": "00000002", "responderUri": "https://docs.google.com/forms/d/e/********" }
質問の追加
質問の追加等、フォームの内容を変更する際は(forms).batchUpdateメソッドを使用します。
HTTP request
POST https://forms.googleapis.com/v1/forms/{formId}:batchUpdate
Headers
Content-Type: application/json Authorization: Bearer (アクセストークン)
Request Body
{ "requests": [ { "createItem": { "item": { "title": "好きな動物を教えてください。", "questionItem": { "question": { "required": "True", "choiceQuestion": { "type": "RADIO", "options": [ { "value": "イヌ" }, { "value": "ネコ" }, { "value": "パンダ" }, { "value": "タヌキ" } ] } } } }, "location": { "index": 0 } } } ] }
Response Body
{ "replies": [ { "createItem": { "itemId": "******", "questionId": [ "******" ] } } ], "writeControl": { "requiredRevisionId": "00000005" } }
その他、APIの詳細については公式リファレンスをご参照ください。
以上、Google Forms APIのテストをしてみましたが、簡単にフォームを作成できました。
正式にAPIがリリースされたことで他サービスからフォームの作成や編集が行いやすくなったので、今後はGoogleフォームを利用する機会ももっと増えるのではないでしょうか。
ちなみに、Google Apps Script(GAS)の場合はFormAppクラスが用意されているので、フォームの作成や編集を行う際はこちらを使うと良いでしょう。
function myFunction() { const form = FormApp.create("新規フォーム"); form.setTitle("アンケートフォーム"); form.addMultipleChoiceItem() .setTitle("好きな動物を教えてください。") .setChoiceValues(["イヌ", "ネコ", "パンダ", "タヌキ"]); }
2022/3/22 追記:
FormAppクラス(Forms Service)では実現できない処理をForms APIを使って実現するサンプルを @tanaike 氏が作成されていました。
正式リリース前の情報ですが、非常に参考になります。
この記事へのコメントはありません。