前提・実現したいこと
専門外のものです。
googleスプレッドシートを使って複数の宛先にそれぞれ別の添付ファイル(ZIPファイル)を添付して
メールを一括送信したいです。
スプレッドシートで下記のコードを書き込んで、同一の添付ファイルをつけるところまでは出来ました。
下記コードではタイトルと本文のみ差し込み(可変部分の設定)ができるようになっているのですが、
これを、添付ファイルも差し込みにしたいです。
スプレッドシートのつくりは「補足情報」の欄に記載しております。
発生している問題・エラーメッセージ
同一のファイルしかメール添付できない
該当のソースコード
function pushSendButton() { /* スプレッドシートのシートを取得と準備 */ var ss = SpreadsheetApp.getActiveSpreadsheet(); //このスプレッドシート var mainSheet = ss.getSheetByName("main"); //メインシート var skSheet = ss.getSheetByName("sashikomi"); //差込シート var skEndRow = skSheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得 var count = skEndRow - 1; // 送信確認 var select = Browser.msgBox("メールを一括送信します!", count + "件のメールを送信しますが、よろしいですか?", Browser.Buttons.OK_CANCEL); if (select == 'ok') { sendEmail(); } if (select == 'cancel') { Browser.msgBox("送信をキャンセルしました"); } } function sendEmail() { /* スプレッドシートのシートを取得と準備 */ var ss = SpreadsheetApp.getActiveSpreadsheet(); // このファイル var mainSheet = ss.getSheetByName("main"); // メインシート var skSheet = ss.getSheetByName("sashikomi"); // 差込シート var skEndRow = skSheet.getDataRange().getLastRow(); // シートの使用範囲のうち最終行を取得 var attachedFileId = mainSheet.getRange(7, 2).getValue(); // 添付ファイルのID /* メール基本データの設定 */ var strFrom = mainSheet.getRange(3, 2).getValue(); // fromメールアドレス var strSender = mainSheet.getRange(4, 2).getValue(); // 差出人の名前 var strSubject = mainSheet.getRange(5, 2).getValue(); // メールタイトル var strBody = mainSheet.getRange(6, 2).getValue(); // 本文 if (attachedFileId) { var attachedFile = DriveApp.getFileById(attachedFileId); // 添付ファイル } var strSubjectIns = ""; // 差込後のメールタイトル var strBodyIns = ""; // 差込後のメール本文 for (var i = 2; i <= skEndRow; i++) { // 差込シートの取得 var strToEmail = skSheet.getRange(i, 1).getValue(); // 送信先メール var strCc = skSheet.getRange(i, 2).getValue(); // CC var strBcc = skSheet.getRange(i, 3).getValue(); // BCC var sk1 = skSheet.getRange(i, 4).getValue(); // 差込① var sk2 = skSheet.getRange(i, 5).getValue(); // 差込② var sk3 = skSheet.getRange(i, 6).getValue(); // 差込③ var sk4 = skSheet.getRange(i, 7).getValue(); // 差込④ var sk5 = skSheet.getRange(i, 8).getValue(); // 差込⑤ var sk6 = skSheet.getRange(i, 9).getValue(); // 差込⑥ // 差込を反映 strSubjectIns = strSubject.replace(/$1/g, sk1).replace(/$2/g, sk2).replace(/$3/g, sk3).replace(/$4/g, sk4).replace(/$5/g, sk5).replace(/$6/g, sk6); //タイトル strBodyIns = strBody.replace(/$1/g, sk1).replace(/$2/g, sk2).replace(/$3/g, sk3).replace(/$4/g, sk4).replace(/$5/g, sk5).replace(/$6/g, sk6); //本文 /* メール送信 */ if (attachedFileId) { // 添付ファイル有りの場合 GmailApp.sendEmail( strToEmail, //toアドレス strSubjectIns, //メールタイトル strBodyIns, //本文 { cc: strCc, //ccアドレス bcc: strBcc, //bccアドレス from: strFrom, //fromアドレス name: strSender, //差出人 attachments: attachedFile //添付ファイル } ); } else { // 添付ファイル無しの場合 GmailApp.sendEmail( strToEmail, //toアドレス strSubjectIns, //メールタイトル strBodyIns, //本文 { cc: strCc, //ccアドレス bcc: strBcc, //bccアドレス from: strFrom, //fromアドレス name: strSender, //差出人 } ); } } Browser.msgBox("送信が完了しました。"); }
補足情報(FW/ツールのバージョンなど)
スプレッドシートにはコードの通り2つのシートを用意しており、
「main」というシートの2列3行目から下に向かって順に
(2列3行目)発信者メールアドレス
(2列4行目)発信者名前
(2列5行目)件名
(2列6行目)本文
(2列7行目)添付ファイル
の情報を記入しています。
現時点では件名および本文の中に$1~$6の差し込み(可変コード)が含まれております。
次に「sashikomi」というシートに
メールの送信先・CC・BCC・差し込み部分に代入する情報を記載しています。
1列2行目から右に向かって順に
宛先メールアドレス CCアドレス BCCアドレス 差込① 差込② 差込③ 差込④ 差込⑤ 差込⑥ 差込⑦
の情報を記載しており、2行目から下に向かってA社、B社、C社… と送信先のリストが並んでいる状態です。
差込⑦の列に、ドライブにアップロードしたZIPファイルのID(ファイル名にできるとなお嬉しいです)を
A社、B社、C社、、、とそれぞれ記入し、
「main」シートの2列7行目には「$7」と記入し、差込としたいです。
説明が下手で申し訳ございませんが、どうぞよろしくお願いいたします。