GASでGoogleフォームに記述式の質問を追加する方法


pen

photo credit: -svetlanaya- Macro Mondays – Fingertip(s) via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASでGoogleフォームを作成する方法についてお伝えしています。

前回の記事はコチラ。

GASで作成したGoogleフォームを指定のフォルダに移動する方法
GASでGoogleフォームを一発で作成するツールの作成する方法をお伝えしています。今回は、GASで作成したGoogleフォームを指定のフォルダに移動する方法、スクリプトストアやDriveサービスを使います。

作成したフォームを指定のフォルダに保存する方法をお伝えしました。

今回は、いよいよ質問の追加をしていきます。まずは、簡単なところからテキスト、つまり記述式の質問からです。

では、GASでGoogleフォームに記述式の質問を追加する方法です。

行ってみましょう!

スポンサーリンク

前回のおさらい

前回までで作成したスクリプトはコチラです。

function createEventForm(){
 
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const values = ss.getSheetByName('イベント概要').getDataRange().getValues();
  const formTitle = values[0][1]; //タイトル
  const formDescription = values[1][1]; //概要
  
  const form = FormApp.create(formTitle);
    
  const id = PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
  const formFile = DriveApp.getFileById(form.getId());
  DriveApp.getFolderById(id).addFile(formFile);
  DriveApp.getRootFolder().removeFile(formFile);
 
  form.setDescription(formDescription);
  
}

実行すると、スプレッドシートの情報をもとに作成したフォームが、スクリプトプロパティのFOLDER_IDに設定したフォルダIDのフォルダに作成されます。

ただ、このフォーム。

タイトルと概要だけで、質問が何も追加されていません。

今回はまず、テキスト形式、つまり記述式の質問として「氏名」と「会社名」を追加していきます。

フォームに記述式の質問を追加する

フォームに記述式の質問を追加するには、FormオブジェクトにaddTextItemメソッドを使います。

書式はコチラです。

Formオブジェクト.addTextItem()

addTextItemメソッドの戻り値は、TextItemオブジェクトという記述式の質問を表すオブジェクトになります。

ただ、これだけでは空っぽのテキスト入力欄が追加されるだけです。

setTitleメソッドで質問のタイトルを設定する

ですから、質問のタイトルはそれとは別に設定してあげる必要があります。

そのために、addTextItemメソッドの戻り値である、TextItemオブジェクトに対してsetTitleメソッドを使ってあげます。

TextItemオブジェクト.setItem(質問のタイトル)

setRequiredメソッドで質問の回答を必須にする

「氏名」といった項目は、フォームの入力項目としては「必須」ですよね。

Googleフォームでは入力必須の設定をすることができます。

つまり、必須に設定した質問に回答をしないと「送信」ができないように設定できるのです。

GASでも、質問が必須かどうかを設定することができます。

記述式の質問について必須にするかどうかは、TextItemオブジェクトに対してsetRequiredメソッドを使います。

TextItemオブジェクト.setRequired(ブール値)

必須かどうかをブール値つまりtrueかfalseで設定をします。

記述式の質問を含むフォームを生成するスクリプト

では、前述のスクリプトに記述式の「氏名」と「会社名」を質問として追加したスクリプトを紹介します。

function createEventForm(){
 
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const values = ss.getSheetByName('イベント概要').getDataRange().getValues();
  const formTitle = values[0][1]; //タイトル
  const formDescription = values[1][1]; //概要
  
  const form = FormApp.create(formTitle);
    
  const id = PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
  const formFile = DriveApp.getFileById(form.getId());
  DriveApp.getFolderById(id).addFile(formFile);
  DriveApp.getRootFolder().removeFile(formFile);
 
  form.setDescription(formDescription);
  form.addTextItem().setTitle('氏名').setRequired(true);
  form.addTextItem().setTitle('会社名');     
  
}

16,17行目が新たに追加した行になりますね。

実行をすると、以下のようなフォームを作成することができます。

記述式の質問を追加したフォームを作成した

「氏名」にはアスタリスクマークがついていて必須であることはわかりますね。

まとめ

以上、GASで記述式の質問を追加したGoogleフォームの作り方についてお伝えしました。

記述式つまりテキスト形式の質問の作り方は、他の質問であったとしても一緒なので、必要に応じて使ってくださいね。

さて、次回はメールアドレスの入力欄を作っていきます。

GASでGoogleフォームにメールアドレスの入力欄とバリデーションを追加する方法
GASでGoogleフォームを作成するツールの作り方について解説をしています。今回は、GASでGoogleフォームにメールアドレスの入力欄を追加する方法です。回答の検証つまり、バリデーションも追加しますよ。

どうぞお楽しみに!

連載目次:GASでGoogleフォームを一発で作成するツールを作る

イベントの申し込みやアンケートにとっても便利なGoogleフォーム。スプレッドシートの入力内容をもとに、一発でフォームを作成するツールを作っていきます。
  1. GASでGoogleフォームを作成する最も簡単なスクリプト
  2. GASで作成したGoogleフォームを指定のフォルダに移動する方法
  3. GASでGoogleフォームに記述式の質問を追加する方法
  4. GASでGoogleフォームにメールアドレスの入力欄とバリデーションを追加する方法
  5. GASでGoogleフォームにラジオボタンの質問を追加する方法
  6. GASでGoogleフォームにチェックボックス形式の質問を追加する方法
  7. GASでGoogleフォームにプルダウンリストの質問を追加する方法
  8. Googleフォームの質問の選択肢をスプレッドシートのデータから生成するGAS関数の作り方
  9. GASでGoogleフォームに追加できる質問の種類とそのメソッドまとめ

タイトルとURLをコピーしました