🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

1回答

1679閲覧

【GAS】スプレッドシート→Gmailの連携をしているのですが、自動返信メールが2回いってしまいます。

Yoshioo

総合スコア1

Google スプレッドシート

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/01/13 04:09

前提・実現したいこと

GASを使ってスプレッドシートの更新をトリガーとしてユーザーに自動返信メールを送るプログラムを使っているのですが、なぜかいつも2回メールがいってしまいます。
こちら原因が分からず困っているのですが、どなたか心当たりのある方ご教授いただけますと幸いです。

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

・GASを使った自動返信メールが2回いってしまう

該当のソースコード

GAS(Google

1function autoReply() { 2 var sheet = SpreadsheetApp.getActiveSheet();//スプレッドシートを取得 3 var row = sheet.getLastRow();//最終行を取得 4 var name = sheet.getRange(row, 1).getValue();//1列目、最終行のセルの値を取得。つまりお名前欄のデータを取得します。 5 var mail = sheet.getRange(row, 2).getValue();//メアド取得 6 var senderName = {name: "〇〇"}; //差出人名 7 var title = "ここにタイトルが入ります";//メールタイトル 8 //メール本文を作成 9 var mail_body 10 = name + "様\n\n" 11 +"〇〇に事前会員登録頂き、誠に有難うございます。\n\n" 12 + "事前登録会員の皆様へ特別に、\n" 13 ---以下本文--- 14 + "---------------------------------------------------------------------------------------------------\n\n" 15 ; 16 GmailApp.sendEmail(mail,title,mail_body, 17 {bcc: 'support@〇〇.jp', //bcc 18 from: 'no-reply@〇〇.jp', //送信元アドレス 19 name: '〇〇'} //送信元の名前 20 );//メール送信 21} 22

試したこと

・トリガーとのところを確認し、1個しか登録されていないことを確認。
・それまで使用してたZapierなどの外部ツールの実行停止を確認
しました。

no-replyなどが悪さをしているのでしょうか?

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

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

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

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

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

coco_bauer

2021/01/13 04:54

「ユーザーに自動返信メールを送るプログラム」の問題だと思われますので、そのプログラムを質問に追加してください。
Yoshioo

2021/01/13 04:58

GmailApp.sendEmail(mail,title,mail_body, {bcc: 'support@〇〇.jp', //bcc from: 'no-reply@〇〇.jp', //送信元アドレス name: '〇〇'} //送信元の名前 );//メール送信 ここではなくてですか?
coco_bauer

2021/01/13 07:03

質問のautoReplyを実行しても、メールが2回送られるとは思えない。GmailApp.sendEmailが実行される機会は1回しかない。 だとすると、autoReplyが2回呼び出されているのではないかと思ったのです。質問のコードはautoReply関数の定義だけなので、それを呼び出すプログラムが存在して、そこでautoReplyが2回呼び出される可能性があるのではないかとの推測をしました。
Yoshioo

2021/01/13 07:05

ありがとうございます。 改めて確認してみましたが、autoReplyを呼び出すプログラムは組み込まれてないですね…
Yoshioo

2021/01/13 07:08

ちなみに、もう一個プログラムを入れているのですがそれも毎度2回実行されているようです。
sawa

2021/01/13 08:46

同じタイミングでプログラムが2回動いてるっぽいので、実行数を確認してみてはいかがですか? 該当のスクリプトが書かれたプロジェクトから「実行数」が確認できます。 旧エディタなら メニューの表示からいけます。
Yoshioo

2021/01/13 10:25

はい、2回実行されてしまっていることが確認できました。 しかしこちらの直し方が分かりません…
sawa

2021/01/13 10:40

2回ともまったく同じでしょうか? autoReplyの関数名を変えて試して見てください。autoReply2とかなんでもよいです。
Yoshioo

2021/01/13 10:52

autoReply2に変えてみましたが、2回メールが来ました…
sawa

2021/01/13 10:59

このautoReplyをトリガーでスプレッドシート 編集時に設定してるんですよね?
Yoshioo

2021/01/13 11:04

そうです!
Yoshioo

2021/01/13 11:04

失礼しました 編集時では起動しなかったので変更時にしています
sawa

2021/01/13 12:06

編集時で起動しないのは謎ですね。 変更が2回とカウントされてるののかも。 どんな変更をされてますか?
Yoshioo

2021/01/13 13:51

STUDIOというNoCodeツール上で作成した申し込みフォームに回答があると、連携しているスプレッドシートが自動更新されるようになっています。 こちらが更新されるのをトリガーにGASが起動しています。 これまでZapierを使用していましたが、その際は1回のみの起動でした。 こちらで回答になっていますでしょうか…
papinianus

2021/01/13 14:07 編集

sawa 様ご指摘のようにトリガーの問題だと思いますが、そもそも原理的に onEdit のイベントパラメータを受け取って、今どのシートのどのセルがどのように変更されたかを判定しなければ、意図しないメールの発動を抑えることはできないと思います。 変更と編集の違いとして、ノート(付箋?メモ?コメント?)を付けたり消したりするのは、変更だが編集ではない、みたいなのがあった気がします。 あとは、変更なので、関数の再計算が走ってるとかですかね。 いずれにしても、変更か編集かということを超えて、メールを送るべき更新、を条件分岐で掴まえる必要があるのではないか、というコメントです。
papinianus

2021/01/13 14:10

コメントを送ったら、質問者様のコメントが見えました。 > ツール上で作成した申し込みフォームに回答があると、連携しているスプレッドシートが自動更新されるようになっています。 ユーザの手入力でないから「変更」である必要があるのですね。すばらしい。 それ、そのツールが 2 回処理しているのではないでしょうか。(セルが 2 つある、なら分かりやすいですが、ツール側の都合で 1 セルしかなくても 2 変更している可能性がありますね)
guest

回答1

0

STUDIOというNoCodeツール上で作成した申し込みフォームに回答があると、連携しているスプレッドシートが自動更新されるようになっています。

こちらが更新されるのをトリガーにGASが起動しています。
これまでZapierを使用していましたが、その際は1回のみの起動でした。

質問にこの情報を載せないと、解決までに時間を無駄にくいます。
ツールを変えたら問題が発生したなら、原因は現在利用中のSTUDIOにあると考えられます。
当方では使ってないので検証できませんが、なんらかの処理が2回されており、変更時のトリガーが2回起動しているのでしょう。

GAS側でやれるとしたら、とりあえず 関数を autoReply(e) として、console.log(e) をコードに追記いただき、どんな変更があったか出力して 1回目と2回目のログに差異がないかを確認。
違いがあれば、それを使って ifで仕分けが出来るかと思います。

投稿2021/01/14 00:36

sawa

総合スコア3002

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問