みなさん、Google Form使ってますか?

手軽にアンケートが取れて、スプレッドシートで集計もできて、とても便利ですよね。

でも、「GUIでフォームをぽちぽち作るの、地味に面倒…」という人も多いのではないでしょうか?

実は、GAS(Google Apps Script)でフォームを一発作成できると聞き、さっそく試してみました。

これ、やばいです。超便利!


生成AIに作らせる

今回はGoogleのサービスなので、Geminiに依頼してみました。

gasを使って、適当なグーグルフォームを作って。

と指示を出すと、フォーム作成コードと詳細な作り方を教えてくれました。

作成手順

新規スプレッドシートを開く

右上の「拡張機能」タブ → Apps Scriptを選択

GAS1

スクリプトエディタに以下のコードを貼り付ける

// この関数を実行するとGoogleフォームが作成されます
function createEventForm() {

  // フォームを作成
  const form = FormApp.create('イベント参加登録フォーム');
  form.setTitle('イベント参加登録フォーム');
  form.setDescription('以下の項目にご記入の上、ご登録ください。');
  form.setCollectEmail(true); // メールアドレスを自動収集

  Logger.log('フォームを作成しました: %s', form.getTitle());

  // 質問1: お名前
  const nameItem = form.addTextItem();
  nameItem.setTitle('お名前').setRequired(true);

  // 質問2: 参加希望日
  const dateItem = form.addListItem();
  dateItem.setTitle('参加希望日')
    .setChoiceValues(['11月10日(金)', '11月11日(土)', '11月12日(日)']);

  // 質問3: ご興味のあるセッション
  const sessionItem = form.addCheckboxItem();
  sessionItem.setTitle('ご興味のあるセッションを選択してください(複数選択可)')
    .setChoices([
      sessionItem.createChoice('基調講演A'),
      sessionItem.createChoice('技術セッションB'),
      sessionItem.createChoice('ハンズオンC'),
      sessionItem.createChoice('ネットワーキング')
    ]);

  // 質問4: その他ご要望
  const otherItem = form.addParagraphTextItem();
  otherItem.setTitle('その他、ご意見・ご要望があればご記入ください');

  // ログ出力
  Logger.log('公開URL: ' + form.getPublishedUrl());
  Logger.log('編集用URL: ' + form.getEditUrl());

  Browser.msgBox('フォームを作成しました! ログでURLを確認してください。');
}

保存して「実行」ボタンを押す

初回は認証を求められます。アカウントを選んで許可を押します。

GAS2

処理中ぐるぐるが終わらなくて心配になりますが、スプレッドシート側に戻ると作成完了ダイアログが表示されます。(GASでたまによくあるやつ)

GAS3

これで完成!あとはGUIで編集しても良し、コードでカスタマイズしても良し!

よく使うコード例

新規フォームを作成する

const form = FormApp.create('新しいアンケート');
form.setTitle('イベント出欠確認');
form.setDescription('ご回答をよろしくお願いいたします。');

既存フォームを編集する

const formId = '既存フォームのURL';
const form = FormApp.openById(formId);

質問項目の例

A. テキスト入力(1行)

form.addTextItem().setTitle('お名前');

B. 段落テキスト(複数行)

form.addParagraphTextItem().setTitle('ご意見・ご感想をお聞かせください');

C. ラジオボタン(単一選択)

form.addMultipleChoiceItem()
  .setTitle('参加希望のコースを選択してください')
  .setChoiceValues(['Aコース', 'Bコース', 'Cコース']);

D. チェックボックス(複数選択可)

form.addCheckboxItem()
  .setTitle('興味のある分野をすべて選んでください')
  .setChoiceValues(['テクノロジー', 'アート', 'スポーツ', '料理']);

E. プルダウンリスト

form.addListItem()
  .setTitle('あなたの年代を選択してください')
  .setChoiceValues(['10代', '20代', '30代', '40代', '50代以上']);

F. 均等目盛

form.addScaleItem()
  .setTitle('イベントの満足度を5段階で評価してください')
  .setBounds(1, 5)
  .setLabels('不満', '満足');

質問の共通オプション

const nameItem = form.addTextItem().setTitle('会社名');
nameItem.setRequired(true);
nameItem.setHelpText('(例)株式会社〇〇');

回答によって分岐させる

const pageForYes = form.addPageBreakItem().setTitle('参加者向け情報');
const pageForNo  = form.addPageBreakItem().setTitle('ご協力ありがとうございました');

const participationItem = form.addMultipleChoiceItem()
  .setTitle('イベントに参加しますか?');

const choiceYes = participationItem.createChoice('はい', pageForYes);
const choiceNo  = participationItem.createChoice('いいえ', pageForNo);

participationItem.setChoices([choiceYes, choiceNo]);

送信後メッセージの変更

form.setConfirmationMessage('ご回答ありがとうございました。当日お会いできるのを楽しみにしています!');

自然言語でサクッと作らせたいので、プロンプトのテンプレも作ってみました。

GeminiでもGPT-4oでも、良い感じにコードを出してくれました。

コピーする編集する
あなたはGoogle Apps Scriptのエキスパートです。
以下の仕様に基づいて、Googleフォームを新規で作成するためのGASコードを生成してください。

# フォームの基本情報
- フォームのタイトル: サンプルアンケート
- フォームの説明文: これはサンプルアンケートです。ご協力ありがとうございます。

# 質問項目リスト
1. お名前(短い記述式・必須)
2. メールアドレス(短い記述式・必須・メール形式)
3. ご年齢(短い記述式・必須・0以上の数値)
4. 性別(ラジオボタン・[男性, 女性, その他]・必須)
5. 好きな食べ物(チェックボックス・[寿司, ラーメン, カレー, 焼肉]・必須)
6. ご意見・ご感想(段落・任意)

# コードに関する追加指示
- 全ての処理を1つの関数(例: `createMyForm`)にまとめてください。
- コードには簡単なコメントを入れてください。
- 実行後、フォームの「編集用URL」と「公開用URL」をログに表示してください。

おわりに

煩わしいフォーム作成が一発で出来る。 かなり使えるネタではないでしょうか。 よく使うようなフォームはテンプレートを固めて保存しておいてもいいかもです。

今回この素敵なTipsは、最近立ち上げられた佐賀県を中心にGASを学びたい人のコミュニティ

「ALL IN GAS」の中で教えていただきました。

興味のある方は、以下のフォームからぜひご参加ください!

👉 ALL IN GAS 参加フォームはこちら

あ、HAGAKURE PROGRAMMING塾もよろしくお願いいたします。