###前提・実現したいこと
GASを使って、添付ファイル・インライン画像付きのメールを
スプレッドシートのリストから自動送付したいと思っています。
リストには試しに2行別の宛先で記載しており、
1行目に書いてある宛先には添付ファイルなど全て問題なく送れるのですが
2行目が送れない状況です。
コードのご確認とご指摘をお願いいたします。
エラーメッセージは下記のものが表記されています。
発生しているエラーメッセージ
Exception: 次のオブジェクトを取得できません。イテレータが末尾に到達しました。
該当のソースコード
function sendMail(){
const mySheet = SpreadsheetApp.getActiveSheet();
const lastRow = mySheet.getLastRow();
const DOC_URL = '×××××××××××××';
const doc = DocumentApp.openByUrl(DOC_URL);
const docText = doc.getBody().getText();
const tempu = DriveApp.getFilesByName('××××××.png');
const tempu2 = DriveApp.getFilesByName('××××××.png');
const image = DriveApp.getFilesByName('××××××.png').next().getBlob();
// スプレッドシートの情報を取得
for(let i = 2; i <= lastRow; i++){
// A列(No)が未入力の行までいったら終了する
if (mySheet.getRange(i,1).getValue() == ""){
Browser.msgBox(i + "行目まで実行しました。終了します。");
return;
}
var sent = mySheet.getRange(i,6).getValue(); if (sent == "送信済み") { // 送信済みの行はスキップ Browser.msgBox(i + "行目:送信済みのためスキップします"); } else { // チェックボックスの判定 var status = mySheet.getRange(i, 7).getValue(); // チェックボックスにチェックが入っている場合 if(status == true){ // 入力内容を取得 const subject = "×××××××××" //件名 const address = mySheet.getRange(i, 2).getValue(); //宛先 const Name = mySheet.getRange(i, 3).getValue(); //氏名 const recipient = mySheet.getRange(i, 4).getValue(); //送信先メールアドレス const cc = mySheet.getRange(i, 5).getValue(); //cc // ドキュメントのテキストを置き換える const body = docText
.replace('{宛先}',address)
.replace('{氏名}',Name)
// メールを送信する
MailApp.sendEmail({
to: recipient,
subject: subject,
body: body,
htmlBody: body,
inlineImages:{imageFileName:image},
cc: cc,
name: "×××××××××",
attachments : [tempu.next(),tempu2.next()],
});
// メールの送信を記録
var range = mySheet.getRange(i,6).setValue("送信済み");
} else {
// チェックが入っていない場合スキップする
var range = mySheet.getRange(i,6).setValue("送信スキップ");
}
}
}
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/18 16:24