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

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

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

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

Q&A

解決済

2回答

862閲覧

Googleフォームの内容をGASで自動返信する際に自動返信メールの件名が空欄になってしまう&送信元を変更したい

k-fkags

総合スコア15

Google Apps Script

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

0グッド

0クリップ

投稿2018/11/27 06:56

前提・実現したいこと

Googleフォームの内容をGASで自動返信する際に自動返信メールの件名が空欄になってしまう&送信元を変更したい

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

自動返信の送信元を変更したい。件名が消えてしまう。

エラーメッセージ

該当のソースコード

function sendMailFromForm()
{
Logger.log('sendMailFromForm() debug start');

//------------------------------------------------------------
// 設定エリアここから
//------------------------------------------------------------

// 件名、本文、フッター
var subject = "";
var body
="この度はお問い合わせ頂きまして誠にありがとうございます。\n"
+"○○○○○○○○○○○○\n\n"
+"○○○○○○○○○○○○\n"
+ "------------------------------------------------------------\n\n";
var footer
= "------------------------------------------------------------\n\n"
+ "○○○○○○○○○○○○\n"
+ "○○○○○○○○○○○○\n"
+ "○○○○○○○○○○○○\n"
+ "○○○○○○○○○○○○\n"
+ "○○○○○○○○○○○○\n\n"

+ "○○○○○○○○○○○○\n"
+ "○○○○○○○○○○○○\n";

// 入力カラム名の指定
var NAME_COL_NAME = '○○○○○○○○○○○○';
var MAIL_COL_NAME = '○○○○○○○○○○○○';
var SUBJ_COL_NAME = '○○○○○○○○○○○○';

// メール送信先
var admin = "○○○○○○○○○○○○"; // 管理者(必須)
var cc = "○○○○○○○○○○○○"; // Cc:
var bcc = ""; // Bcc:
var reply = "○○○○○○○○○○○○"; // Reply-To:
var to = ""; // To: (入力者のアドレスが自動で入ります)
var fromadd ="○○○○○○○○○○○○";

//------------------------------------------------------------
// 設定エリアここまで
//------------------------------------------------------------

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_value == "") { 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;
}
if ( col_name === SUBJ_COL_NAME ) {
subject = "【Twitter】"+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);
}

}

ソースコード

試したこと

if(col_value == "") { continue;} //これを追加
を加えて空欄の質問をメールから弾くようにしたところ、成功したのですが、今度は自動返信メールの件名が空欄になってしまいました。
こちらの解決法と、送信元の変更方法をご教授いただきたいです。(色々調べfrom等試したのですが、うまく行きませんでした。Gmailappが定義されていない等のエラーが出てしまいます。)

よろしくお願い致します。

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

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

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

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

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

CHERRY

2018/11/27 07:00

ソースコードは、マークダウンで囲んでください。
kikukiku

2018/11/27 07:22

スプレッドシート上に件名が入力されていない場合、件名を空欄にしてメール送信するようなソースになっています。件名が入力されていない場合には、どうしたいのですか?件名が入力されてない場合、メール送信されないのが正しいように感じます。
guest

回答2

0

この追加によって空白が生じる可能性は、前回の質問の際に、指摘しました。

しかもこのコピペの、見にくいコードから、宛先と件名が空になると具体的に指摘してます。

今回、件名が直って、宛先は空だったらエラーになりますが、どうするのでしょうか?

GmailAppはコード中に出てきませんよね。どうやってそのエラーに出会ったのですか?
MailAppではfromを書き換えられません。
なぜわかったのか分かりませんが、GmailAppを使って、fromを設定する必要があります

投稿2018/11/27 23:37

papinianus

総合スコア12705

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

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

k-fkags

2018/12/07 11:23

ご回答いただきありがとうございました。お礼が遅くなってしまい申し訳ありません
guest

0

ベストアンサー

自動返信メールの件名が空欄になってしまう

 

if(col_value == "") { continue;} //これを追加

ということなので、col_name が、SUBJ_COL_NAME の場合でも col_value が、空( "" ) であれば、上記のif 文の条件が成立して、continue されて次の項目に行くので、 subject を設定している

if ( col_name === SUBJ_COL_NAME ) {
subject = "【Twitter】"+col_value+"○○○○○○○○○○○○";
}

は、実行されないので、subject は、初期化されたまま( "" ) ですので、タイトルは空欄になりますね。

とりあえずは、この SUBJ_COL_NAME と一致した場合に subject 設定している部分を continue の前に出すのが、簡単でしょうか。

送信元を変更したい

var options = {}; の後に

options.from = "差出人アドレス";

で、指定すれば、変更できると思います。

なお、差出人アドレスとして、指定できるメールアドレスは、GASスクリプト作成者の Gmail の「設定」→「アカウントとインポートフィルタ」→「名前」に登録されている「確認済みアドレス」だけです。

投稿2018/11/27 07:16

編集2018/11/27 07:18
CHERRY

総合スコア25171

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

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

k-fkags

2018/12/07 11:23

ご回答いただきありがとうございます!とても参考になりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問