
photo credit: -svetlanaya- Macro Mondays – Fingertip(s) via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
GASでGoogleフォームを作成する方法についてお伝えしています。
前回の記事はコチラ。

作成したフォームを指定のフォルダに保存する方法をお伝えしました。
今回は、いよいよ質問の追加をしていきます。まずは、簡単なところからテキスト、つまり記述式の質問からです。
では、GASでGoogleフォームに記述式の質問を追加する方法です。
行ってみましょう!
前回のおさらい
前回までで作成したスクリプトはコチラです。
function createEventForm(){ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet() var values = spreadsheet.getSheetByName('イベント概要').getDataRange().getValues(); var formTitle = values[0][1]; //タイトル var formDescription = values[1][1]; //概要 var form = FormApp.create(formTitle); var FOLDER_ID = PropertiesService.getScriptProperties().getProperty('FOLDER_ID'); var formFile = DriveApp.getFileById(form.getId()); DriveApp.getFolderById(FOLDER_ID).addFile(formFile); DriveApp.getRootFolder().removeFile(formFile); form.setDescription(formDescription); }
実行すると、スプレッドシートの情報をもとに作成したフォームが、スクリプトプロパティのFOLDER_IDにIDを指定したフォルダに作成されます。
ただ、このフォーム。
タイトルと概要だけで、質問が何も追加されていません。
今回はまず、テキスト形式、つまり記述式の質問として「氏名」と「会社名」を追加していきます。
フォームに記述式の質問を追加する
フォームに記述式の質問を追加するには、FormオブジェクトにaddTextItemメソッドを使います。
書式はコチラです。
addTextItemメソッドの戻り値は、TextItemオブジェクトという記述式の質問を表すオブジェクトになります。
ただ、これだけでは空っぽのテキスト入力欄が追加されるだけです。
setTitleメソッドで質問のタイトルを設定する
ですから、質問のタイトルはそれとは別に設定してあげる必要があります。
そのために、addTextItemメソッドの戻り値である、TextItemオブジェクトに対してsetTitleメソッドを使ってあげます。
setRequiredメソッドで質問の回答を必須にする
「氏名」といった項目は、フォームの入力項目としては「必須」ですよね。
Googleフォームでは入力必須の設定をすることができます。
つまり、必須に設定した質問に回答をしないと「送信」ができないように設定できるのです。
GASでも、質問が必須かどうかを設定することができます。
記述式の質問について必須にするかどうかは、TextItemオブジェクトに対してsetRequiredメソッドを使います。
必須かどうかは真偽値つまりtrueかfalseで設定をします。
記述式の質問を含むフォームを生成するスクリプト
では、前述のスクリプトに記述式の「氏名」と「会社名」を質問として追加したスクリプトを紹介します。
function createEventForm(){ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet() var values = spreadsheet.getSheetByName('イベント概要').getDataRange().getValues(); var formTitle = values[0][1]; //タイトル var formDescription = values[1][1]; //概要 var form = FormApp.create(formTitle); var FOLDER_ID = PropertiesService.getScriptProperties().getProperty('FOLDER_ID'); var formFile = DriveApp.getFileById(form.getId()); DriveApp.getFolderById(FOLDER_ID).addFile(formFile); DriveApp.getRootFolder().removeFile(formFile); form.setDescription(formDescription); form.addTextItem().setTitle('氏名').setRequired(true); form.addTextItem().setTitle('会社名'); }
15,16行目が新たに追加した行になりますね。
実行をすると、以下のようなフォームを作成することができます。
「氏名」にはアスタリスクマークがついていて必須であることはわかりますね。
まとめ
以上、GASで記述式の質問を追加したGoogleフォームの作り方についてお伝えしました。
記述式つまりテキスト形式の質問の作り方は、他の質問であったとしても一緒なので、必要に応じて使ってくださいね。
さて、次回はメールアドレスの入力欄を作っていきます。
どうぞお楽しみに!