2011-03-20

Google Apps Script: 簡単な問い合わせフォームをつくる

Google Apps Scriptが普通のGoogleアカウントでも使えることを知ったので、試しに問い合わせフォームをつくってみました。

フォームで氏名、メールアドレス、件名、本文を入力してもらい、お問い合わせが送信されると指定したアドレスに問い合わせメールが届くという簡単なものです(メール自体はスプレッドシートの「通知」 > 「ユーザーがフォームを送信したとき」にチェック で届きますが、「フォームが送信されました」というメッセージだけで内容は含まれていないので内容を含めるためにGoogle Apps Scriptを使いました)。

作成する手順は下記です。

  1. フォームを作成する
    1. Googleドキュメントの「新規作成」 > 「フォーム」でフォームの編集画面を開く
    2. 「氏名」「メールアドレス」「件名」をテキスト形式で、「本文」を段落テキスト形式で作成
    3. 必要なら「その他の操作」 > 「確認を編集」でフォーム送信後のメッセージを入力
    4. フォームを保存して閉じる

  2. スクリプトを適用する
    1. 保存したフォームをスプレッドシートで開いて「ツール」 > 「スクリプト」 > 「スクリプトエディタ」からスクリプトエディタを開く
    2. スクリプト(後述)を記入して「トリガー」 > 「Current script's triggers...」を選択
    3. 保存していない場合保存ダイアログが出てくるので適当に名前をつけて保存
    4. 「No triggers set up. Click here to add one now.」となっているリンクテキストをクリック
    5. 「Run」で実行したい関数名(後述のスクリプトでは「OnFormSubmit」)、「Events」で「From spreadsheet」と「On form submit」を選択して保存

スクリプトは下記です。

これで作成したフォームからデータが送信されると指定したアドレスに内容メールが届くようになります。

ただ1つ問題があって、データの適切な検証エラーメッセージを出す方法がわからないのでメールアドレスの検証ができていません。メールアドレスの検証と拒否は

  1. スプレッドシートでメールアドレスの列をすべて選択
  2. 「ツール」 > 「データの検証」で「条件」を「テキスト」「有効なメール」にする
  3. 「無効なデータも入力を許可するが、警告を表示する」のチェックを外す

ことで行うことができますが、これで問い合わせを拒否したときに表示されるメッセージは「エラーが発生しました。このエラーはスプレッドシート チームに通知されています。Google が解決に取り組みます。」というメールアドレスが間違っているとは到底考えられないものになります。

Google Apps Script自体はcronのようなスケジューラ機能があったりいろいろなことができそうなので、時間があったらまた調べてみます。