このページの本文へ

PROGRAMMING Web制作をちょっと便利にするGoogle Apps Script入門 ― 第2回

Googleフォームで自動返信システムをサクッとつくる

2014年04月01日 11時00分更新

掌田津耶乃

  • この記事をはてなブックマークに追加
本文印刷

動作をチェック!

 実際にライブフォームを表示し、フォームを送信してみましょう。このサンプルでは、Gmailを利用してフォームの送信内容をメールで管理者に自動送信します。フォームを送信したら、Gmailを開いてメールを確認しましょう。送信したフォームの内容がまとめて書かれているのが分かります。

Gmailに届いたメール。フォームの送信内容が書かれている

フォーム送信の情報は?

 このスクリプトでは、引数で渡されているeオブジェクトから、送信したフォームの情報を取り出しています。ポイントを絞って簡単に説明しておきましょう。

1. 送信した各アイテムの情報を取り出す


var itemResponses = e.response.getItemResponses();

 送信したフォームの各アイテムのタイトルや入力/選択した値などの情報をまとめて取り出します。e.response.getItemResponses();で、フォームの1つひとつのアイテムを扱うオブジェクトの配列のようなものが取り出せるのです。

2. 繰り返し処理する


for (var i = 0; i < itemResponses.length; i++) {
  var itemResponse = itemResponses[i];
  ……変数itemResponsesを使って各アイテムの処理をする……
}

 1で取り出した配列を、繰り返しを使って順に取り出し、処理します。これがフォーム処理の基本的なやり方です。

3. タイトルと入力値を取り出す


var 変数 = itemResponse.getItem().getTitle();
var 変数 = itemResponse.getResponse();

 2の繰り返しで取り出したオブジェクトからは、getItem().getTitle()で質問のタイトルを、getResponse()で入力した答えをそれぞれ取り出せます。後は、それらを使って処理をすればいい、というわけです。

 この「繰り返しを使って順にフォームのアイテムを取り出し、タイトルや入力値を得る」という基本形が分かれば、同様にさまざまな操作ができます。「message +=……」の部分を書き換えて、送信されるメッセージの内容を書き換えるなどしてカスタマイズに挑戦してみてください。

GmailApp.sendEmailは覚えると超便利!

 今回のメインテーマである「メールの自動送信」について説明しましょう。リスト1では、「GmailApp」というアプリケーションオブジェクトを使っています。GmailAppはGmailを操作する機能を提供するオブジェクトです。この中にある「sendEmail」が、Gmailでメールを送信するためのメソッドです。以下のように記述します。


GmailApp.sendEmail( 送信先 , タイトル , コンテンツ );

 たったこれだけで、GASのスクリプト内からいつでもメールが送信できます。とても簡単で、アイデア次第で応用が効きますので、ぜひ覚えて使ってみてください。

【GAS作成その2】問い合わせの返信メールを送ろう

 GmailApp.sendEmailを用い、フォームを送信した相手にメッセージを自動的に返すようにスクリプトを改良してみましょう。

 スクリプトエディタを開き、先ほど書いたスクリプトをリスト2のように書き直してください(「☆あなたのGmailアドレスを記入☆」部分には、フォーム作成に利用しているGoogleアカウントのメールアドレスを記入してください)。

リスト2


function submitForm(e){
  var itemResponses = e.response.getItemResponses();
  var message = '';
  var username = '';
  var mail = '';
  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    if (question == 'お名前'){
      username = answer;
    }
    if (question == 'メールアドレス'){
      mail = answer;
    }
    message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n';
  }
  var address = '☆あなたのGmailアドレスを記入☆';
  var title = 'お問い合わせフォームが送信されました';
  var content = '以下の内容でフォームが送信されました。\n\n' + message;
  GmailApp.sendEmail(address, title, content);
  var title2 = 'お問い合わせありがとうございます';
  var content2 = username + '様\n\nこの度はお問い合わせいただきありがとうございます。\n'
    + 'のちほど担当者よりご連絡させていただきますので、いましばらくお待ちください。\n'
    + '宜しくお願いいたします。\n\n'
    + '※このメールはお問い合わせをいただいた方に自動送信されます。\n\n'
    + '株式会社●●●● オンラインショップ\n'
    + 'TEL 123-456-7890\n'
    + '定休日:土・日・祝日';
  GmailApp.sendEmail(mail, title2, content2);
}

 以上で、送信されたフォームの内容を管理者にメールで送り、問い合わせた相手には「お問い合わせありがとうございます」の返信メールが届くようになります。実際にフォームを送信して、届くメールを確認してみましょう。

フォームを送信した相手に届く返信メール

 今回は、シンプルな問い合わせフォームを基に、Gmailでメール送信する機能を作成しました。次回はフォームとほかのGoogleサービスを連動する、さらに便利なスクリプトを紹介します。

著者:掌田津耶乃

著者写真

テクニカルライター。日本でMacが発売され始めたころから、主にMac系雑誌に寄稿。以後、Mac、Windows、Web、スマートフォンなどあらゆるプラットフォームのプログラミングビギナーに向けて、書籍や雑誌、自身が開発・運営するWebサイト「CARD.tuyano.com」「libro」などで著作活動を行なっている。


Web Professionalトップへ

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています

ASCII.jp会員サービス 週刊Web Professional登録

HTMLリファレンス誘導バナー

CSSリファレンスサイト誘導バナー

Webディレクター江口明日香が行く