facebook twitter hatena line email

Google/スプレットシート/問い合わせフォーム作成

提供: 初心者エンジニアの簡易メモ
2017年2月15日 (水) 23:16時点におけるAdmin (トーク | 投稿記録)による版 (スプレットシートの共有とオーナー変更)

移動: 案内検索

準備

Googleアカウントを作成

Googleドライブにアクセス

http://drive.google.com

スプレットシート作成

新規/Googleスプレットシートで作成

フォーム作成

挿入/フォーム作成を選択

フォームの入力項目作成

フォーム編集画面の下のアイテム追加から項目を選択

以下を入力

質問のタイトル:メールアドレス
質問のタイプ:テキスト
質問のタイトル:お名前
質問のタイプ:テキスト
質問のタイプ:問い合わせ内容
質問のタイプ:段落テキスト

フォームを使って見る

フォーム編集画面/実際のフォームを見るを選択

回答後に回答者と管理者メールを送る

  1. スプレットシート/ツール/スクリプトエディタを選択
  2. myfunction(){}を削除して以下をコピーペーストして保存する
function sendMailFromForm() {
   Logger.log('sendMailFromForm() debug start');
   //------------------------------------------------------------
   // 設定エリアここから
   //------------------------------------------------------------
   // 件名、本文、フッター
   var subject = "[お問い合わせ]"; 
   var body
       = "お問い合わせありがとうございます。\n\n"
       + "------------------------------------------------------------\n";
   var footer
       = "------------------------------------------------------------\n\n"
       + "後ほど担当者よりご連絡させていただきます。";
   // 入力カラム名の指定
   var NAME_COL_NAME = 'お名前';
   var MAIL_COL_NAME = 'メールアドレス';
   var SUBJ_COL_NAME = '件名';
   // メール送信先
   var admin = "送信先@gmail.com"; // 管理者(必須)
   var cc    = "";    // Cc:
   var bcc   = admin; // Bcc:
   var reply = admin; // Reply-To:
   var to    = "";    // 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 col_name  = rg.getCell(1, j).getValue();    // カラム名
           var col_value = rg.getCell(rows, j).getValue(); // 入力値
           if ( col_name ) {
               body += "【"+col_name+"】\n";
               body += col_value + "\n\n";
               if ( col_name === NAME_COL_NAME ) {
                   body = col_value+" 様\n\n"+body;
               }
               if ( col_name === NAME_COL_NAME ) {
                   subject += " "+col_value+" 様";
               }
               if ( col_name === MAIL_COL_NAME ) {
                   to = col_value;
               }
               if ( col_name === SUBJ_COL_NAME ) {
                   subject += col_value;
               }
           }
       }
       body += footer;
       // 送信先オプション
       var options = {};
       if ( cc )    options.cc      = cc;
       if ( bcc )   options.bcc     = bcc;
       if ( reply ) options.replyTo = reply;
       // メール送信
       if ( to ) {
           MailApp.sendEmail(to, subject, body, options);
       }else{
           MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body);
       }
   }catch(e){
       MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message);
   } 
}
  1. スクリプトエディタ画面/リソース/現在のプロジェクトのトリガーを選択
  2. sendMailFromForm/スプレットシートからフォーム送信時を選択
  3. フォーム実行画面から投稿するとメールが送られてくるので確認。

"スクリプト を正常に完了できませんでした。"のメールエラー

以下エラーが出た場合

スクリプト を正常に完了できませんでした。失敗のまとめを下記に示します。このスクリプトのトリガーを設定したり、今後の失敗の通知の受信設定を変更したりするには


スプレットシートの共有とオーナー変更

  1. スプレットシートファイルの共有から編集者を追加
  2. 同じdomainならオーナーを変更可能

管理人メールアドレス変更

  1. スクリプトコード内のadminの箇所のメールを変更
  2. 新しい管理人のgoogleアカウントを開き
  3. スクリプトエディタ画面/リソース/現在のプロジェクトのトリガーを選択
  4. sendMailFromForm/スプレットシートからフォーム送信時を選択

問い合わせ者にメールを送らない方法

"body += footer;"のコードの下に以下を追加

// 問い合わせ者にメールを送らない
to = admin;
bcc   = "";

参考

【応用編】Googleフォーム転送&返信スクリプト

http://cityjumperweb.com/2014/02/06/google-form2/

Googleドライブのフォーム入力後に自動返信メールを送る方法Add Star

http://d.hatena.ne.jp/sho_oza/20130315/1363356215