質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

1756閲覧

Google Formの自動返信、フォームに質問を追加したらエラーが出る

Pandagirl

総合スコア10

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2018/12/25 14:54

前提・実現したいこと

Googleフォームでイベントの申込みページを作成し、確認メールを自動返信するようスクリプトエディタを使って設定しました。当初はうまく動作していたのですが、公開後にフォームに質問を追加したところエラー(【失敗】Googleフォームにメールアドレスが指定されていません)が出るようになりました。
スクリプトはこちらのページからコピペしました
https://liapoc.com/new-google-form.html

回答の内容がそのまま確認メール本文に反映されるようになっているのですが、その確認メールでは自分が作成したフォームにはない2つ目のメールアドレス入力項目ができています。実際のフォームには存在しないメールアドレス入力項目がスクリプト上では存在し(?)そこが空欄のためエラーが出ているようです。
既に公開してしまっているためフォーム自体を作り直すことは難しいのですが、対処法はあるでしょうか?
※プログラミング経験は全くなく、今回のソースコードは見様見真似で作りました。

発生している問題・エラーメッセージ

【失敗】Googleフォームにメールアドレスが指定されていません

該当のソースコード

function sendMailGoogleForm() { Logger.log('sendMailGoogleForm() debug start'); //------------------------------------------------------------ // 設定エリアここから //------------------------------------------------------------ // 件名、本文、フッター var subject = "[講演の申込みを受け付けました]"; var body = "お申込みありがとうございます。こちらが講演当日の時間と集合場所になります。ご確認ください。\n\n【タイトル】\n\n【日程】\n\n【場所】\n\n\n" + "------------------------------------------------------------\n"; var footer = "------------------------------------------------------------\n\n" + "それでは当日、お待ちしております。\nよろしくお願いいたします。"; // 入力カラム名の指定 var NAME_COL_NAME = '氏名'; var MAIL_COL_NAME = 'メールアドレス'; // メール送信先 var admin = "送信者メールアドレス"; // 管理者(必須) var sendername = "送信者名";//送信者名(必須) 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); } }

試したこと

Googleフォームでの「メールアドレス」の項目は一つしか作っていません。
そこではメールアドレスの検証も行うように設定しています。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/12/26 00:15

フォームが記録されるスプレッドシートの一行目にメールアドレスという項目が複数存在しませんか?
Pandagirl

2018/12/26 02:02

ありました!!入力欄が空欄になっている方の「メールアドレス」の列を削除したところ正常に作動しました! ありがとうございます!
papinianus

2018/12/26 03:21

その内容をコメントではなく、自分で回答として書いて、自己解決でベストアンサーにしてください。
guest

回答1

0

gas

1if ( col_name === MAIL_COL_NAME ) { 2 to = col_value; 3 }

この部分を以下のように変えて上手く動作しますか?

gas

1if ( !col_value && col_name === MAIL_COL_NAME ) { 2 to = col_value; 3 }

投稿2018/12/25 17:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Pandagirl

2018/12/26 02:04

コードをこのように変えてデバッグ→作動せず コードを変え、スプレッドシート上にある2つめの「メールアドレス」の列を削除→作動せず コードは元のままで、スプレッドシート上にある2つめの「メールアドレス」の列を削除→正常に作動 このような結果になりました。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問