##解決したいこと
以前、こちらでスプレッドシートでGASをつかったメール送信の方法をお伺いしました。
以下のコードで正常に動いていたのですが、
送信元を個人のメールアドレスではなくnoreply@~のメールアドレスにしたいと思い、
最後の行に{noReply: true}
を追加しました。
しかし、メールは受信者に正常に送信されるのですが同じメールが2通連続で送信されてしまいます。
##仕様
過去質問のような仕様には変わりません。
Bの値がAに変更されたら、Aにnoreply@~でメールが届く・・・
Cの値がBに変更されたら、Bにnoreply@~でメールが届く・・・
といった感じです。
GAS
1 2function onEdit(e) { 3 Logger.log(JSON.stringify(e)); 4 //if(e.range.getSheet().getName() !== "") { return; } //特定のシート名でなければ中断 5 SpreadsheetApp.getActiveSpreadsheet(); 6 7 //通知対象者と対応するメール通知先を連想配列で格納 8 const recipients = { 9 'A': 'aaaaaa@abc.com', 10 'B': 'bbbbbb@bbb.co.jp', 11 'C': 'cccccc@ccc.co.jp', 12 'D': 'dddddd@ddd.co.jp' 13 14 }; 15 16 //メールの件名と本文を指定 17 const subject = '【更新】'+ e.source.getName()+'【要確認】'; 18 const body ='担当が変わりました。再度確認お願いします。'; 19 20 MailApp.sendEmail(recipients[e.value], subject, body,{noReply: true}); 21 22} 23
トリガが二重に登録されていることはないですか?
トリガは二重に登録していませんでした。
すべてのプロジェクトのトリガを確認したところ、「無効なトリガ」?のようなものが2,3個あったので全て削除して実行してみるとメールは1通になりました。
しかし、再度実行してみるとやはり2通ずつ届いてしまいます。。
{noReply: true}を外すと1通しか送られないのは確定事項ですか?
もう1度試して結果を教えてください。
{noReply: true}を外てみると、受信メールには1通しか届いていないように見えていましたが、
今Gmailで「全てのメール」を確認したところ、シートを共有している他の管理アドレスからも送られているようでした・・!
(自分(現オーナー)のアドレスと共有している管理者(元オーナー)のアドレスから1通ずつ=計2通!)
偶然的ではあるのですが、トリガなしでテストしたシートにも元オーナーがいましたがそうはなっていません。元オーナー側にトリガーがあるという趣旨でしょうか?
そもそもトリガーのオーナーの仕組み?が理解できていませんでした・・・
てっきりシートの権限を変更すると、同時にトリガのオーナーも自動的に変更されるのかと思っていました><(そう考えるとトリガを再度設定すること自体がおかしい行為でしたね・・・)
元オーナーの管理者でログインしトリガを確認たところ、管理者がオーナーのトリガがあることに気付きました・・
つまり、現オーナーの私、元オーナーの管理者の両方でonEditのトリガ設定をしており二重になってたということです。(papinianusさんに最初に返答いただいたき、確認したときは現オーナーの自分のトリガしか確認してませんでした・・・)
お騒がせしました。。。
管理者側のトリガを全て消して、{noReply: true}を付けたところ
ちゃんと1通だけが届くようになりました!
ありがとうございます。
自己回答&自己解決をお願いします。
回答1件
あなたの回答
tips
プレビュー