[Web] GoogleDriveを利用したメールフォームの作成

記事内にプロモーションを含む場合があります。

Googledocks form 00

Google Drive(Googleドキュメント)を利用した、お問い合わせフォーム作りをご紹介します。Googleアカウントさえあれば誰でも比較的簡単に設置できるフォーム、アンケートなどに使用するのが一般的ですが、スクリプトを使えばメールフォームとして活用することができます。

1. Google Drive作成 > フォームからフォームを作成する。

Googledocks form 02

テーマを選択。

Googledocks form 03

質問のタイトルに題目を、通常のフォームは「テキスト」を選択して、必要項目を追加していきます。

Googledocks form 04

メッセージ欄は「段落テキスト」を選択。

Googledocks form 05

送信後の表示などを設定してフォームの作成は終了。

Googledocks mailform 07

完成例。

Googledocks form 06

フォームの編集画面から回答 > 回答先を変更する でスプレッドシートを作成して、入力内容を表示できるようにします。


2. フォームに入力された内容をメールで送信する

 Googledocks mailform 03

スプレッドシートの ツール > スクリプトエディタ を開き、下記のスクリプトに自分のメールアドレスを入力して保存(フロッピーのアイコン)します。



// フォーム送信されたら起動され、最終行の内容をメールに記載して、送信する
function sendMailByFormSubmitted() {
  Logger.log('sendMailByFormSubmitted() start');

  // 件名、本文
  var subject = "お問い合わせフォーム"; 
  var body    = "以下の内容で送信されました。\n\n---------------------------------------\n\n";

  // メールアドレス入力カラム名の指定 
  var MAIL_CLMN_NAME = 'メールアドレス';
  var NAME_COL_NAME = 'お名前';
  var MAIL_COL_NAME = 'メールアドレス';
  var SUBJ_COL_NAME = '件名';

  
  // メール送信先(管理者等)
  var mail_admin = "自分のメールアドレス";
  var mail_cc    = mail_admin;
  var mail_reply = mail_admin;
  var mail_to    = '';

  try{    
    // スプレッドシートの操作
    var sh   = SpreadsheetApp.getActiveSheet();
    var rows = sh.getLastRow();
    var cols = sh.getLastColumn();
    var rg   = sh.getDataRange();
    Logger.log("rows="+rows+" cols="+cols);
    
    // メール本文作成と送信先メールアドレス取得
    for (var j = 1; j <= cols; j++ ) {
      var clmn_name  = rg.getCell(1, j).getValue();    // カラム名
      var clmn_value = rg.getCell(rows, j).getValue(); // 入力値
      body += ( clmn_name + ":" + clmn_value + "\n\n" );
      
      if ( clmn_name === MAIL_CLMN_NAME ) {
        mail_to = clmn_value;
      }
    }
    
  // メール送信
    if ( mail_to ) {
      MailApp.sendEmail(mail_to, subject, body, {cc : mail_cc, replyTo : mail_reply});
    }else{
      MailApp.sendEmail(mail_admin, "error spreadsheet none mailaddress", body);
    }
  }catch(e){
    MailApp.sendEmail(mail_admin, "error spreadsheet func: sendMailByFormSubmiited()", e.message);
  } 
}

Googledocks mailform 05

リソース > 現在のプロジェクトのトリガー を選択。

Googledocks mailform 06

スプレッドシートから フォーム送信時に通知するように設定して、保存。
メールフォームに入力してみて、以下のようなメールが届けば成功です。 

Googledocks mailform 08


参考サイト