前提・実現したいこと
スプレッドシートを参照して、複数のメールアドレス宛に個別の文章を送信したい。
コードはドキュメントにスプレッドシートの文章を代入してメール送信するようにしています。
発生している問題・エラーメッセージ
発生している問題:同じメアドに同じ文章が何通も届く。エラーメッセージは特に発生しておりません。
該当のソースコード
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週間程度になります。 回答をお待ちしている間も、自分で解決できないか調べてみようと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー