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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

解決済

2回答

1013閲覧

【GAS】自動応答メールが送信元にも届いてしまう

u_anshin

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

0グッド

2クリップ

投稿2023/09/05 08:08

編集2023/09/05 08:27

実現したいこと

Googleフォームから申込があった際、申込アドレスに対してのみ自動応答メールを返したい。

前提

下記の記述で、申込アドレス(=SSの7列目にあたるデータ)に対して自動応答メールを返すことは問題なくできています。

function sendAutoReplyEmail(e) {
var userEmail = e.values[6]; // 申込者のメールアドレス(SSの7列目にあたるデータ)
var subject = "講習会へのお申込ありがとうございます";

var message = e.values[1] + "\n"; // 申込者の会社名(SSの2列目にあたるデータ)
message += e.values[2] + " 様\n\n"; // 申込者の氏名(SSの3列目にあたるデータ)

message += "この度は、講習会・セミナーにお申込みをいただき、誠にありがとうございます。(以下略)\n\n";

MailApp.sendEmail({
to: userEmail,
subject: subject,
body: message
});

発生している問題

自動応答のメールが、送信元(=トリガー実行アカウント)に対しても届いてしまいます。
特に転送設定もしていませんが、受信トレイに「from:送信元アドレス TO:申込者アドレス」の状態で自動応答のメールが届きます。
送信履歴として受信トレイにメールが届いてしまっているのでしょうか?
こちら届かないようにすることはできないでしょうか。

試したこと

・送信元アドレスの指定(下記の通り記述)…変化なし
MailApp.sendEmail({
to: userEmail,
subject: subject,
body: message,
from: "自動応答メールの送信元アドレス"
});

・gmailのスレッド表示をOFF…変化なし

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

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

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

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

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

YellowGreen

2023/09/05 08:22

スレッド表示で送信メールが一緒に表示されているのではありませんか?
u_anshin

2023/09/05 08:35

ありがとうございます。 スレッド表示ではなく、申込があると自動応答メールが申込者に届き、また同じものが送信元の受信トレイにも届くというかたちです。 送信したメールが受信トレイに届くことはこれまでありませんでした。 一応設定でスレッド表示をオフにしてテストしてみましたが、結果は同様でした…。 初心者なので的外れな返答でしたら申し訳ございません。
YellowGreen

2023/09/05 08:54

念のための確認が続きますが、 ・フィルターで受信トレイに篩い分けされていたりもしてませんね。 ・送信先が送信元のエイリアスということでもないですね。
YellowGreen

2023/09/05 09:04

from: "自動応答メールの送信元アドレス" の行は不要(指定できない)なので削除してみてください。
YellowGreen

2023/09/05 09:13

引数をオブジェクト渡しでなく、 sendMail(userEmail, subject, message); と直接指定するとどうなりますか?
YellowGreen

2023/09/05 09:35 編集

おそらく GmailAppのsendMailのoptionsでのエイリアス指定のfrom:と混同されているかと思われます。 EmailAppのsendMailで 送信者名を表示したいときは、 オブジェクト渡しのときに from: 送信者のメアド ではなく、 name: 送信者の名称 で表示させることができますが、 メアドを指定するのではなく名称です。
YellowGreen

2023/09/05 09:23

オブジェクト渡しのときに from: というキーはないので cc:かbcc:として解釈されたのかもしれませんね。 送信済みのラベルにあるメールのソース表示でccかbccが指定されていないか確認できると思います。
u_anshin

2023/09/06 00:37

色々と考えていただき、参考情報までありがとうございます。 ---- 引数をオブジェクト渡しでなく、 sendMail(userEmail, subject, message); と直接指定するとどうなりますか? ---- →こちら実行してみましたがエラーが出て送信できませんでした…。  もう少し調べてやってみます。 エラー:Exception: Failed to send email: no recipient at sendAutoReplyEmail(コード:25:11)
YellowGreen

2023/09/06 00:50 編集

当方で、次のスクリプトで試してみましたが正常に送信され、送信元の受信トレイにはメールは届きませんでした(送信済みにはありますが、受信トレイには表示されません)。 不思議です。 ちなみに上のエラーの内容は、toのアドレスがないというものです。 function sendAutoReplyEmail(e) { var userEmail = e.values[6]; // 申込者のメールアドレス(SSの7列目にあたるデータ) var subject = "講習会へのお申込ありがとうございます"; var message = e.values[1] + "\n"; // 申込者の会社名(SSの2列目にあたるデータ) message += e.values[2] + " 様\n\n"; // 申込者の氏名(SSの3列目にあたるデータ) message += "この度は、講習会・セミナーにお申込みをいただき、誠にありがとうございます。(以下略)\n\n"; MailApp.sendEmail(userEmail, subject, message); }
u_anshin

2023/09/06 00:57

ご丁寧にありがとうございます。 記載のスクリプトをコピペで実行しましたら送信は成功しました。 先程はどこかミスがあったのかもしれません…すみません。 しかしながらやはり受信トレイのラベルが付き、受信トレイに表示されてしまいます…。 ちなみにブラウザのgmailで確認しています。
YellowGreen

2023/09/06 01:06

ちなみに、質問に掲示されている修正後のスクリプトで動作確認しましたが、メールが送信され、 送信元の受信トレイには表示されておりません。(送信済みにはありますが) これまでの受信トレイに表示されている送信済みのメールを全て削除した上で、 新たにフォームから送信してみてご確認ください。
u_anshin

2023/09/06 01:21

そうなんですね…一応別のgoogleアカウントでも実行を試してみたのですが、同じ状態になってしまいまして…。 送信済みメールをゴミ箱からも完全に削除した上で実行しましたが、やはり受信トレイに表示されてしまいました。
YellowGreen

2023/09/06 01:29 編集

不思議です。受信トレイのラベルが付くのは、送信先に自分のアドレスがあるからだと思うのですが、 ブラウザで送信済みのメールを表示して「︙」のメニューから「メッセージのソースを表示」を選んで そのソースの中にBCCかCCで始まる行がないかどうかご確認ください。 あるいは、Toのアドレスに送信元のアドレスが含まれていないかどうかも。
YellowGreen

2023/09/06 01:32

それでも不明な場合、 次のようにGmailAppで試してみるとどうなりますか。 function sendAutoReplyEmail(e) { var userEmail = e.values[6]; // 申込者のメールアドレス(SSの7列目にあたるデータ) var subject = "講習会へのお申込ありがとうございます"; var message = e.values[1] + "\n"; // 申込者の会社名(SSの2列目にあたるデータ) message += e.values[2] + " 様\n\n"; // 申込者の氏名(SSの3列目にあたるデータ) message += "この度は、講習会・セミナーにお申込みをいただき、誠にありがとうございます。(以下略)\n\n"; GmailApp.sendEmail(userEmail, subject, message);//GmailAppで送信 }
u_anshin

2023/09/06 01:55

ありがとうございます。 メッセージソースを確認すると、bccやccの記述はありませんでしたが、1行目が以下のとおりに記載されていました。 Delivered-To: 送信元(=GAS実行)アドレス その他のTOやfromは「TO:送信先(=申込者)アドレス」「 From:送信元アドレス」と意図した内容で記述されていました。 ---- GmailAppで試すと、下記の通りエラーが出てしまいましたが、何かgoogle側で設定が必要なのでしょうか…。 Exception: The script does not have permission to perform that action. Required permissions: (https://www.googleapis.com/auth/gmail.send || https://www.googleapis.com/auth/gmail.compose || https://www.googleapis.com/auth/gmail.modify || https://mail.google.com/ || https://www.googleapis.com/auth/gmail.addons.current.action.compose) at sendAutoReplyEmail(コード:25:10)
YellowGreen

2023/09/06 02:05 編集

原因は、その1行目だと思いますが、なぜそうなっているかですね。 Google側の設定については、 トリガーを一度削除して再設定するとアクセス権承認を求められると思います。
u_anshin

2023/09/06 02:16

トリガーを再設定して実行してみると、受信トレイに残らず送信することができました!!! GmailAppの記述が必要だったんですね。 数日悩んでいたので本当に助かりました。ありがとうございます。 よろしければベストアンサーにさせていただきたいので、お手数ですが回答の方にコメントいただけないでしょうか?
YellowGreen

2023/09/06 04:16

当方ではどちらでも同じなので、 そちらの環境で、なぜGmailAppとEmailAppとで違うのか不思議です。 ベストアンサーについては、 私は回答していませんし、原因不明のままですので 自己解決とされてはいかがでしょうか。
u_anshin

2023/09/06 04:38

助言ありがとうございます。 疑問は残りますが、一旦自己解決とさせていただきます。 この度はありがとうございました。
guest

回答2

0

自己解決

下記の通り修正し、gmailappで送信すると解消しました。

MailApp.sendEmail({
to: userEmail,
subject: subject,
body: message
})

GmailApp.sendEmail(userEmail, subject, message);
}

投稿2023/09/06 04:40

u_anshin

総合スコア1

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

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

0

GAS の MailApp.sendEmail で送信している → 送信アドレスはGAS実行アカウントのGmailアドレスで、
Gmailアプリ(スマホ版またはWeb版)でメール確認しているという前提でよいでしょうか?

手元で確認してみたところ
想定通り「送信者=GAS実行アカウント・受信者=コードで指定したアドレス」としてGmailアプリの送信済みボックスに入っていましたが
その際なぜか「受信トレイ」ラベルが付与されていたので、送信メールにも関わらず受信メールのように見える状態でした。
おそらく質問者さんと同じ現象なのではないでしょうか。

特に実害はないとは思いますが、大量にメール受信しているように見えてうっとうしい…等であれば
ブラウザ版からならフィルタでラベルを付けない設定に出来るかもしれません。

投稿2023/09/05 09:29

pecmm

総合スコア760

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

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

u_anshin

2023/09/06 00:29

ご回答ありがとうございます! はい、そちらの前提で相違ありません。 またご確認いただいたとおりの現象です。そういう仕様…ということなんですかね。 一応フィルタ設定で受信トレイから弾くことはできました。 ただ、送信元として使用したいgmailアドレスは、全社員が他の用途でも使用しているのもあり全員にフィルタ設定をしてもらうのはなるべく避けたいのですが…GASの記述次第で解消するのは難しいのでしょうか。 仰る通り実害はないので、難しければ諦めようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問