Googleフォームのsendmailについて

このQ&Aのポイント
  • Googleフォームを使用して申し込みサイトを設置しようとしています。申し込み者には、申し込み内容をメールで送信するためのスクリプトを作成したいと思っています。
  • 既存のスクリプトを使用してフォームの入力内容をメールで送信することができますが、現在のスクリプトはフォームの項目名と異なるため、修正が必要です。
  • 専門家の方々にお願いして、私のGoogleフォームに適したスクリプトを作成していただきたいと思っています。
回答を見る
  • ベストアンサー

Googleフォームのsendmailについて

いつもお世話になっております。(知識がなく「カテゴリ」をPHPにしております。) 早速ではございますが,Googleフォームを使って申し込みサイトを設置しようかと思っております。申し込み頂いた方へは,その内容を保存しておいて頂くためのメールを自動的に送るようにしたいと考え,「Googleフォーム」「sendmail」で検索したところ,以下のサイトがヒットいたしました。 http://creazy.net/2011/03/google_form_mailsend.html これとまったく同じにGoogleフォームを作成し,スクリプトを設置したところ,私が考えているものが送られてきました。しかし,このスクリプトは,「お名前」「メールアドレス」「件名」となっており,私が実際に作成しているGoogleフォームの項目とは異なります。 私の作成している項目は以下の通りです(Googleフォーム上の質問項目と全く同じ)。 お名前 メールアドレス アドレスの再入力 所属(リストから選択)*6項目(リスト)ございます。 〇〇の会員ですか?(リストからの選択)*都合により〇〇と表示 これら以降もう少しございますが,省略いたします(テキスト入力あるいはリストからの選択のみです)。 返信用メール本文には,既存のスクリプトは最大限活用して,つぎのように示したいです。 ************************* ▲▲ 様 申し込みありがとうございます。(→これは該当の日本語を書き換えれば良いのかなと考えます) ------------------------------------------------------------ 【タイムスタンプ】 Tue Sep 01 2015 14:43:09 GMT+0900 (JST) 【お名前】 ▲▲ 【メールアドレス】 ××××@gmail.com 【アドレスの再入力】 ××××@gmail.com 【所属】 〇〇(リストの中から1つ表示される) 【〇〇の会員ですか?】 ◆◆(リストの中から1つ表示される) ------------------------------------------------------------ 後ほど担当者よりご連絡させていただきます。 ************************* 上記のサイトには以下のようなスクリプトが提示されておりますが,なにせ,私には全く知識がなく,下記をどのように修正すれば私のGoogleフォームで機能するのか皆目見当が付きません。 専門家の皆様,この内容の知識をお持ちの皆様,以下のスクリプトを私のフォームで動くように加筆修正頂けますでしょうか。ご多忙のところ申し訳ございませんが,ぜひお願いいたします。 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 = "admin@example.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(); // 入力値 body += "【"+col_name+"】\n"; body += col_value + "\n\n"; if ( col_name === NAME_COL_NAME ) { body = col_value+" 様\n\n"+body; } 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); } }

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#247307
noname#247307
回答No.1

知識がないなら、学んで下さい。学ぶ過程でわからないことがあれば、いくらでも協力します。学ぼうとぜす、代りにやってもらおうと考えているなら、ここでは誰も協力はしないでしょう。

関連するQ&A

  • GASを使った自動返信メールの作成について

    Google フォーム を使って、下記Aのお客様からのお問い合わせフォームに対する自動返信メールを作成したいのですが、Bのような結果になってしまいます。Bに記載された4行を非表示にするにはどのようにすれば良いのでしょうか。また、Google フォーム を使った自動返信のお問い合わせメールを作成するためのGoogle Apps Script について理解するための良書などありましたら、ご紹介頂ければ幸いです。よろしくお願い致します。 A(得たい結果) _______________________________________________________________________________ 山田 太郎 様 お問い合わせありがとうございます。 ------------------------------------------------------------ 【お問い合わせ内容】 テスト・テスト・テスト ------------------------------------------------------------ 後ほど担当者よりご連絡させていただきます。 B(思わしくない結果) _______________________________________________________________________________ 山田 太郎 様 お問い合わせありがとうございます。 ------------------------------------------------------------ 【お名前】 (←非表示にしたい) 山田 太郎 (←非表示にしたい) 【メールアドレス】 (←非表示にしたい) ***@***.ocn.ne.jp (←非表示にしたい) 【お問い合わせ内容】 テスト・テスト・テスト ------------------------------------------------------------ 後ほど担当者よりご連絡させていただきます。 [Apps Script に記述したコード(参考サイト:https://liapoc.com/new-google-form.html)] function sendMailGoogleForm() { Logger.log('sendMailGoogleForm() debug start'); //------------------------------------------------------------ // 設定エリアここから //------------------------------------------------------------ // 件名、本文、フッター var subject = "[お問い合わせありがとうございます。]"; var body = "お問い合わせありがとうございます。\n\n" +"------------------------------------------------------------\n"; var footer = "------------------------------------------------------------\n\n" +"後ほど担当者よりご連絡させていただきます。"; // 入力カラム名の指定 var NAME_COL_NAME = 'お名前'; var MAIL_COL_NAME = 'メールアドレス'; // メール送信先 var admin = "***@gmail.com"; // 管理者(必須) var sendername = "web担当者備忘録";//送信者名(必須) var cc = ""; // Cc: var bcc = admin; // Bcc: var reply = admin; // Reply-To: var to = ""; // To: (入力者のアドレスが自動で入ります) //------------------------------------------------------------ // 設定エリアここまで //------------------------------------------------------------ try{ // スプレッドシートの操作 var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getLastRow(); var cols = sheet.getLastColumn(); var rg = sheet.getDataRange(); Logger.log("rows="+rows+" cols="+cols); // メール件名・本文作成と送信先メールアドレス取得 for (var i = 1; i <= cols; i++ ) { var col_name = rg.getCell(1, i).getValue(); // カラム名 var col_value = rg.getCell(rows, i).getValue(); // 入力値 if (col_name === "タイムスタンプ"){ continue; } body += "【"+col_name+"】\n"; body += col_value + "\n\n"; if ( col_name === NAME_COL_NAME ) { body = col_value+" 様\n\n"+body; } if ( col_name === MAIL_COL_NAME ) { to = col_value; } } body += footer; // 送信先オプション var options = {name: sendername}; 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); } } [スプレッドシート] A B C   D タイムスタンプ    お名前   メールアドレス   お問い合わせ内容 2022/09/11 18:47:12  山田 太郎 ***@***.ocn.ne.jp テスト・テスト・テスト

  • Google フォーム自動送信メールの設定について

    Googleフォーム自動送信メールの設定を行いたいのですが、 下記のメッセージが出て、先に進みません。 ご指導宜しくお願い致します。 ※メールアドレスは伏せさせて頂いています。 ステートメントの前に ; がありません。(行 63、ファイル「コード」) //宛名=address、件名=title、本文=bodyで、メールを送る GmailApp.sendEmail(address,title,body); { from:' ●●@yahoo.co.jp',name:'事務局' }); }

  • Google Apps Scriptの記述

    フォームに入力したら、フォームに基づいてメールを送れるようにしたいと考えています。 そこで次のScriptを記述しました。しかし、フォームに入力し終わってもメールが送信されません。 Google Apps Scriptの参考サイトも無い事と、Googleも仕様を次々新しくしているので持っている書籍があまり参考になりません。 トリガーは次の通りです。 現在のプロジェクトのトリガーで、実行 mySendhokoku イベントスプレッドシートからフォーム送信時 としています。 scriptは function mySendhokoku(e) { var mail_to=e.nameValues["送信先"]; var datetime= new Date(); var hokoku=e.nameValues["報告種類"]; var kaisi=e.nameValues["開始時間"]; var shuryo=e.nameValues["終了時間"]; var kyukei=e.nameValues["休憩時間"]; var biko=e.nameValues["本文備考"]; var today=formatDate(datetime,"MM/dd"); var subject=hokoku+"連絡"+today+"名前"; var body="名前"+"\n\n"; var body=body+"開始時刻"+kaisi+"\n\n"; var body=body+"終了時刻"+shuryo+"\n\n"; var body=body+"休憩時間"+kyukei+"\n\n"; var body=body+biko+"\n\n"; MailApp.sendEmail(mail_to,subject,body); } ちなみに”名前”と言うところは実際は私の名前が入っています。読み替えてください。 日付は5/5などの様に記述したいと思っています。 初心者で至らない点ありますが、よろしくお願いいたします。

  • phpのシンプルなメールフォーム

    あるサイトにて、単一phpのメールフォームのソースをコピーし、使用としましたが、 設定したメールアドレスに、送信ボタンを押しましたが、 受信されません。  ・送信後、「メールを送信しました」と表示されます。  ・送信のあて先は、何も反応なし。  ・ソースの「●●@●●」はダミーです。 以下ソースです。原因がわかりますでしょうか。ご教授のほどよろしくお願いします。 ―――――――――――――――――――――――――――――――――――― <?php // 送信フラグ $send_flg = false; // エラーメッセージ $err_msg = array(); // 送信ボタンを押した後の処理 if ($_POST["post_flg"]) { // エラー if ($_POST["name"] == "") { $err_msg[] = "「お名前」は必須です"; } if ($_POST["email"] == "") { $err_msg[] = "「メールアドレス」は必須です"; } // エラーが無ければ送信 if (count($err_msg) == 0) { // 宛先 $mail_to = "●●@●●"; // 送信元アドレス $mail_from = "form@example.com"; // 件名 $mail_subject = "メールフォームから送信がありました"; // 本文 $mail_body = ""; $mail_body.= "■お名前\n".$_POST["name"]."\n\n"; $mail_body.= "■メールアドレス\n".$_POST["email"]."\n\n"; $mail_body.= "■コメント\n".$_POST["comment"]; // 送信処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail($mail_to, $mail_subject, $mail_body, "From: <".$mail_from.">"); $send_flg = true; $_POST = array(); } } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <?php // 初期フォーム表示 if (!$send_flg) { ?> <h1>メールフォーム</h1> <?php // エラーメッセージがある場合 if (count($err_msg) > 0) { ?> <p style="color:red;"> <?php foreach ($err_msg as $val) { ?> ※<?php echo $val ?><br> <?php } ?> </p> <?php } ?> <form action="mail.php" method="post"> <p> お名前<br> <input type="text" cols="30" name="name" value="<?php echo $_POST["name"] ?>"><br> </p> <p> メールアドレス<br> <input type="text" cols="30" name="email" value="<?php echo $_POST["email"] ?>"><br> </p> <p> コメント<br> <textarea name="comment" cols="50" rows="10"><?php echo $_POST["comment"] ?></textarea><br> </p> <input type="submit" name="post_flg" value="送信する"><br> </form> <?php // メール送信後の表示 } else { ?> <br><br><br><br>メールを送信しました。<br> <?php } ?> </body> </html> ――――――――――――――――――――――――――――――――――――

    • ベストアンサー
    • PHP
  • GASに関して(教えてください)

    Googleフォームの回答をメール送信させるGASを作って運用しています(下記参照)。 ================ function SendMail(e){ // 件名、本文 var subject = "ここにはメールのタイトルが入ります"; var body = ""; // メール送信先 var to = "アドレスX"; var itemResponses = e.response.getItemResponses(); for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var title = itemResponse.getItem().getTitle(); var ans = itemResponse.getResponse(); body += '\n'+title+':'; body += ans; if (title==="依頼内容") { if (ans==="A") { to = "アドレスA"; } else if (ans==="B") { to = "アドレスB"; } } } MailApp.sendEmail({to:to,subject:subject, body:body}); } ================ ここに、 ・"依頼内容" が "A" だったらメールのタイトルは"A" ・"依頼内容" が "B" だったらメールのタイトルは"B" のような分岐も加えたいのですがどうにもやり方が分かりません。 知恵を貸していただければと思います。 よろしくお願いいたします。

  • googleスプレッドシート sendEmail

    googleスプレッドシート から 特定の操作があった時に、 sendEmailメソッドを使用して、 メールを送信したいと考えています。 GmailApp.sendEmail(宛先アドレス、件名、メール本文、オプション) で オプションの所に メールアドレスを入れると送信できるまでは出来ましたが、 メールアドレス固定ではなく、 現在の編集者(ログイン)のgoogleアカウントから 送信するように変更することは可能ですか? 下記は例えになりますが、 オプション内の指定を "メールアドレス" ⇒ "loginuser" みたいに変数の様な物で実現できるかどうかになります。 よろしくお願いします。

  • 問い合わせフォームからPHPを使って、、、、、

    問い合わせフォームからPHPを使って指定のアドレスにメールを送ろうとしているのですが、届きません、、、、、、 原因が分かりません。助けていただけないでしょうか。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>お問い合わせページ</title> <link rel="stylesheet" href="styles.css"> </head> <body> <h1>お問い合わせページ</h1> <form action="send_email.php" method="post"> <label for="name">お名前:</label> <input type="text" id="name" name="name" required><br><br> <label for="email">メールアドレス:</label> <input type="email" id="email" name="email" required><br><br> <label for="message">お問い合わせ内容:</label><br> <textarea id="message" name="message" rows="4" cols="50" required></textarea><br><br> <input type="submit" value="送信"> </form> </body> </html> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 以下がPHPのプログラムです。 <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $email = $_POST["email"]; $message = $_POST["message"]; // 送信先のメールアドレス $to = "***@gmail.com"; // 件名 $subject = "お問い合わせがありました"; // 本文 $body = "お名前: $name\n"; $body .= "メールアドレス: $email\n\n"; $body .= "お問い合わせ内容:\n$message"; // メールを送信 mail($to, $subject, $body); // 送信後のリダイレクト header("Location: thank_you.html"); exit; } ?>

    • 締切済み
    • PHP
  • gasカードの変数をhtmlに反映させるには?

    スプレッドシートから引っ張ってきた情報を、htmlメールに反映させたいと考えています。 以下で書いてみたのですが、HTMIメールではmessageがそのままになってしまいます。 gasで書いた内容を反映させたいのですが、どうしたらいいのでしょうか? アドバイスお願いします。 function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('作業用'); let row = sheet.getLastRow(); //店名 let name = sheet.getRange('c' + row).getValue(); //①商品 let name5= sheet.getRange('h' + row).getValue(); //個数 let name7= sheet.getRange('j' + row).getValue(); //受信日 let name101 = sheet.getRange('a' + row).getValue(); //了解者 let name100 = sheet.getRange('w' + row).getValue(); //メール.htmlを取得 var html = HtmlService.createHtmlOutputFromFile("メール").getContent(); function doGet() { var template = HtmlService.createTemplateFromFile('メール'); template.message = "\n" +        "了解者:" + name100 + "\n" +        "商品:" + name5 + " " + name6 + " " + name7 + "個" + "\n" +        "店名:" + name + "\n" +        "本メールを了解書としてご利用ください。:" + "\n" +        "ご依頼送信日時:" + name101 + "\n"; return template.evaluate(); } var recipient = sheet.getRange('b' + row).getValue();//送信先のアドレス var subject = "了解書"; var body = '了解書' + "\n" + "\n" + "了解者:" + name100 + "\n" + "商品:" + name5 + " " + name6 + " " + name7 + "冊" + "\n" + "店名:" + name + "\n" + "\n" + "本メールを了解書としてご利用ください。:" + "\n" + "ご依頼送信日時:" + name101 + "\n"; var options = { "name": "test", //送信元の名前を指定 "htmlBody": html //メール本文をhtmlファイルに指定 }; //メール送信 if (sheet.getRange('w' + row).getValue() === '') { }else if (!sheet.getRange('x' + row).getValue() === '完了') { return false; } else {  GmailApp.sendEmail(recipient, subject, body, options);  } } <!DOCTYPE html> <html> <head> <base target="_top"> </head>  <body> <h1>了解書</h1> <p>拝啓 格別のお引立てを賜り厚くお礼申し上げます。<br> 下記の商品の返品を承ります。</p>   <h3><?=message?></h3></p>  </body> </html>

  • メイルフォームの本文が文字化け

    サーバーを移転してからある特定のソース部分だけ不具合が出ました。 ユーザーがログイン後特定のユーザーにアドレスを公開せずに、メッセージをおくり、その内容がユーザのアドレスに受信するというものなのですが、 その受信するメイルが文字化けしてしまいます。 その他にサイト上からおなじCGIファイルを利用して、管理者などにおくるメイルは正常に機能しています。 ■不具合が出ている部分のソースです。 if (!open(OUT,"| $SENDMAIL -t")) print OUT "Reply-To: $ADMIN\n"; print OUT "Errors-To: $ADMIN\n"; print OUT "To: $MAIL_TO\n"; if ($BCC == 1){ print OUT "Bcc: $ADMIN\n"; } print OUT "From: $ADMIN\n"; &jis("Subject: $SUBJECT"); print OUT "$msg\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT 'Content-Type: text/plain; charset=iso-2022-jp' . "\n\n"; &jis("$NAME_FROM:$FORM{'MSG'}"); print OUT "$msg\n"; &jis("▽返事はココから"); print OUT "$msg\n"; &jis("$bbs_cgi1?M=H&T=$ID_FROM&I=$ID_TO&PASS=$PASS_TO"); print OUT "$msg\n"; close(OUT); } print "Content-type: text/html\n\n"; print "<html><head><title>$TITLE</title></head><body>■送信完了<HR> $NAME_FROMさんより$NAME_TOさんへメール送信完了しました。<hr>\n"; print "[<a href=$menu_cgi?mode=menu&I=$MYID&PASS=$MYPASS>メニューに戻る</a>]<br>\n"; print "</body></html>\n"; exit; } ■文字化けは aika!' (Basd "&JV;v$O%3%3$+$i (B ような感じです。 かなりいろいろ探してみたのですが、だめなので ここに投稿しました。 わかる方いらっしゃいましたら、どうぞご回答いただければと思います。よろしくお願いします。

    • 締切済み
    • CGI
  • sendmailができない

    (1)お問い合わせフォームを入力(2)入力データを確認する(3)最後に指定先のメールに送り終了 という具合ですが(3)のところで指定先にメールが届きません。メール自体も送られてこないのですがどのような方法があるのでしょうか?どうか教えていただけないでしょうか?お願いします。 (3)のソースコートです。------------- &header; open (KEIJI, "<keijiban.dat") || die "File 'keijiban.dat' Open Error."; # ファイルの内容を1行単位ですべて配列allに読み込む @all = <KEIJI>; split(/:/, $_); if( $_ = $all[0] ){ ($time, $name, $mail, $title, $message, $to) = split(/:/); #送信前処理 &jcode'convert(*subject,'jis'); &jcode'convert(*body,'jis'); # send mail open(MAIL, "| /usr/lib/sendmail -t"); print MAIL "TO: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "\n"; print MAIL "---------------------------------------------\n"; print MAIL " 名前:$name\n"; print MAIL " 内容:$body\n"; print MAIL " お名前:$firstname $secondname\n"; print MAIL " かな:$kanafirstname $kanasecondname\n"; print MAIL " 所在都道府県 :$area1 $area2\n"; print MAIL " 電話番号:$telno\n"; print MAIL " 性別:$sex\n"; print MAIL " メールアドレス:mailto:$mailad\n"; print MAIL "お問合わ、ご相談内容:"; print MAIL " $con1\n"; print MAIL "---------------------------------------------\n"; close(MAIL); &one_message; } close(KEIJI); # フッターを表示するサブルーチン &footer;

専門家に質問してみよう