GASで自動メール送信:個別に本文の内容を変えて送信したい
Q&A
Closed
Google App Scriptでスプレッドシートの内容を自動で取得してメールを送るコードを作成しています。
本文に記載するデータをくり返し取得する方法が知りたいです。
取得したいデータは画像のようになっていて、メール1件に対してA列からE列の情報を反映させたいと思っています。
A列:送信相手の氏名
B列:送信相手のメールアドレス
以下メール本文にくり返し反映させたい内容
(アポイントの相手の情報です)
C列:氏名
D列:場所
E列:日時
2件目のメールはF~J列、3件目のメールはK~O列の内容を反映させたいです。
このC~E列(F~J列、K~O列)は関数で別のシートから値を引用しており、データ数が増えたり減ったりします。
現在のコードではA2からE2のデータのみGASでメールを自動送信できるようになったのですが、C~F列の3行目以下、およびF列以降のデータをくり返し取得することができません。
※現在のコードでは本文用にドキュメントファイルを引用しています。
コード作成参考サイト:https://tonari-it.com/gas-replace/
function sendMail(){
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const values = sheet.getRange(1, 1, lastRow, 10).getValues();
const DOC_URL = 'ドキュメントURL'; //本文の編集用ドキュメント
const doc = DocumentApp.openByUrl(DOC_URL);
const docText = doc.getBody().getText();
const subject = 'メルマガ送信テスト';
const options = {name: '差出人'};
for(let i = 1; i < lastRow; i++){
const personnel = values[i][0]; //担当者
const recipient = values[i][1]; //メルアド
const name = values[i][2]; //氏名
const place = values[i][3]; //場所
const filledin = values[i][4]; //日時
let body = docText
.replace('{担当者}',personnel)
.replace('{氏名}',name)
.replace('{場所}',place)
.replace('{日時}',date)
GmailApp.sendEmail(recipient, subject, body, options);
}
}
bodyに氏名、場所、日時を入力データがなくなるまで代入するようなコードでいいのかなとやってみたのですが、うまく取得できません。
上記のコード以外の方法でも結構ですので、どなたかお力を貸していただけないでしょうか。
よろしくお願いいたします。