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

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

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

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

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

616閲覧

スプレッドシートのリストを元にGASでメール送信をしたい。同じメルアドに何度も送られてしまう症状を改善したい。

GooS

総合スコア5

Google スプレッドシート

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

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/10/11 01:59

編集2020/10/11 03:36

前提・実現したいこと

スプレッドシートを参照して、複数のメールアドレス宛に個別の文章を送信したい。
コードはドキュメントにスプレッドシートの文章を代入してメール送信するようにしています。

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

発生している問題:同じメアドに同じ文章が何通も届く。エラーメッセージは特に発生しておりません。

該当のソースコード

function AutoMail(){ const sheet = SpreadsheetApp.getActiveSheet(); //最終行の取得 const lastRow = sheet.getLastRow(); Logger.log("取得したラスト行 :" + lastRow) //ドキュメントファイルの取得 const DOC_URL = 'https://docs.google.com/document/d/13MPeTTFfsx86Ihb08X4b5BZO25pRt8MW6RnjBzNVRZA/edit'; //ドキュメントファイルを開いてdocに代入 const doc = DocumentApp.openByUrl(DOC_URL); //本文を取得してdoxTextに代入 const docText = doc.getBody().getText(); //メールタイトル const subject = sheet.getRange(3, 8).getValue(); //メール送信元の名前 const myname = '自分の名前'; for(var i = 3; i <= lastRow; i++){ //ファイル名取得 const filename = sheet.getRange(i, 10).getValue(); const report = DriveApp.getFilesByName(filename).next(); Logger.log("取得したファイル名 :" + report) //メルアド取得 const ToAdr = sheet.getRange(i, 5).getValue(); Logger.log("取得した送信先アドレス :" + ToAdr) //cc取得 const ccAdr = sheet.getRange(i, 6).getValue(); Logger.log("取得したCC :" + ccAdr) //メール本文 const mailtext = sheet.getRange(i,9).getValue(); Logger.log("取得したメール本文 :" + mailtext) //メール本文テキスト const body = docText .replace('{本文}',mailtext); Logger.log("取得した本文をdocファイルに入れる :" + body) //メール送信 GmailApp.sendEmail(ToAdr, subject, body,{ cc:ccAdr, attachments:report, name:myname } ) } }

試したこと

ログを確認してみたり、問題のありそうなコード(reportの部分)を削除して起動してみましたが症状は変わらず。
for文が間違っているのかと思い、for関係をネットで調べてみましたが特に間違っているように感じませんでした。
皆様のお力をお借りできればと思っております。

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

補足として画像を添付します。
イメージ説明
↑個人情報とメール本文は黒塗りにしてあります。 ログが下まで続いておりますが、すべてメール文になります。
イメージ説明
実際のスプレッドシートになります。個人情報は黒塗りにしてあります。念のため記載しますが、黒塗り部分に空白セルはございません。
関係ないセルと記載している部分に関しての説明ですが、手作業でメール送信する際に使用している部分になります。
今回のコードとは関係ございません。

GASの勉強を始めて1週間程度になります。 回答をお待ちしている間も、自分で解決できないか調べてみようと思います。
よろしくお願いいたします。

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

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

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

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

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

Daregada

2020/10/11 02:13

「同じメルアドに何度も送られてしまう症状」という言葉を、 (A) AutoMail()を一度実行するだけで、同じ宛先にメールが複数送られてしまう。 (B) AutoMail()を実行すると、前に実行したときにメールをすでに送った宛先にもメールが送られてしまう。 のどちらの意味で使われていますか。
GooS

2020/10/11 02:21 編集

以前もお世話になりました。 今回も回答いただき感謝しています。 質問の言葉が足らず申し訳ございません。 意図としては、(A)の意味での質問になります。 具体的には同じ宛先(CCも同じ)に同じ本文のメールが4通送られている状況になります。 スプレッドシートでいうとE3の宛先に4回ループして送られているといったほうが伝わりやすいでしょうか。 もし追加の質問があればお手数ですが再度ご回答頂ければと思います。 よろしくお願いいたします。
Daregada

2020/10/11 03:02

提示されたコードを見る限りでは、同じ宛先にひとつのメールだけを送るように書かれていますね。ということは、どこかで複数回AutoMail()が実行されているのでは。 (1) スクリプトエディタでAutoMail()を編集して、メールを実際に送らないように、メール送信部分をコメントにしておく→/* GmailApp.sendEmail(~) */ (2) AutoMail()を(ボタンを押して実行ではなく)、スクリプトエディタの▶ボタンを押して実行する。 (3) その後、ログを見て、送信先アドレスのログが全部で何個あるか数える。同じメールアドレスが書かれたログはひとつだけのはずです。 最後の行の「↑送信先のメールアドレス」もメールアドレスとして繰り返しに含まれますが、これだけでは4通のメールを同じアドレスに送ることにはなりません。
GooS

2020/10/11 03:04

追加回答いたします。 先ほどは「Chrome V8 ランタイム」を無効にして起動してからの挙動でしたが、今度はランタイムを有効にして起動してみました。 その場合正常にメール送信されました! わざわざ回答いただいたのにお騒がせして申し訳ありませんでした。 ほかに組んだGASのデータでランタイムが有効だと反応しないものがあったので、そのままにしておりました。 これを機にChrome V8 ランタイムのことについて詳しく調べてみようかと思います。 回答ありがとうございました!
Daregada

2020/10/11 03:07

複数回メールが送信されることはなくなったということですね。 残った問題点としては、 ・メールの件名が、H3セルの内容に固定されている(意図的?) ・6行目の説明も、処理の対処となっている あたりが気になるので、自分で考えてください。
GooS

2020/10/11 03:18

ご回答ありがとうございます。 メールの件名がH3セルに固定になっているのは意図的なものになります。メールの件名がすべて同じなので、そのように対応しております。(変動がある場合にそなえて、そのあたりも改善しようと思います。恥ずかしながら言われて気づきました。。。) スプレッドシートの6行目も処理の対象になっている事をおっしゃっているかと思います。 そこの行は空白に修正して対応しようかと思います。ご指摘ありがとうございます! Daregada様も含め、いろいろな方の質問回答一覧を拝見しながら考えるうちに、今回の自己回答につながったと思っております。 今後も参考にさせていただきます。
guest

回答1

0

自己解決

Chrome V8ランタイムが無効だったので、有効にしたら正常にそれぞれのメルアドに送信された。

投稿2020/10/11 03:07

GooS

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問