
GASメール一斉配信ツール3
画像やPDF、ファイルの添付、差出アドレスの設定方法。
1.イメージ画像の挿入
やり方はいろいろだが、やってみて一番簡単だったものを。前準備としてドライブに画像をアップロードし、IDをコピーしておくこと。画像IDについては「リンクを取得→コピー」したもののうち●●が並んでいる部分が該当「https://drive.google.com/file/d/●●●●●●●●●●●●/view?usp=sharing」。
function createEmailsDraft(){
const spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName("シート1"));
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
for(let i = 4; i <= lastRow; i++){
/*イメージ画像のIDを取得して''内に記載*/
const image1 = DriveApp.getFileById('1YgYwsG9d~~~~~~~~~~~~~vce').getBlob();
const company = sheet.getRange(i, 1).getValue();
const cid = sheet.getRange(i, 3).getValue();
const to = sheet.getRange(i, 2).getValue();
const name = sheet.getRange(i, 4).getValue();
const subject = sheet.getRange(1, 2).getValue();
const non = 'nonText'
const message = sheet.getRange(2, 2).getValue()
.replace('{社名}',company)
.replace('{cid}',cid)
.replace('{氏名}',name);
/* optionにイメージ情報を渡す */
const options = {
"htmlBody":message,
"inlineImages":{image1:image1},
}
GmailApp.sendEmail(to, subject, non, options);
}
}
メール本文にて「<img src="cid:image1">」と記載すると画像が入る。
options内に画像についての設定を入れ込んで完成。getFileById以外にも名前で参照することも可能だがたまにエラーを吐くためやめた。getBlob()を忘れると悲惨。
2.添付ファイルを送付
function createEmailsDraft4(){
const spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName("シート1"));
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
for(let i = 4; i <= lastRow; i++){
const company = sheet.getRange(i, 1).getValue();
const cid = sheet.getRange(i, 3).getValue();
const name = sheet.getRange(i, 4).getValue();
const to = sheet.getRange(i, 2).getValue();
const subject = sheet.getRange(1, 2).getValue();
const non = 'nonText'
const message = sheet.getRange(2, 2).getValue()
.replace('{社名}',company)
.replace('{cid}',cid)
.replace('{メール}',to)
.replace('{氏名}',name);
/* ファイルをIDで取ってくる */
const file = DriveApp.getFileById('1Gokw3LWKHPWdleXXr_v56B2HWaOCjzbC').getBlob();
/* optionsに入れ込む */
const options = {"htmlBody":message, attachments:[file]}
GmailApp.sendEmail(to, subject, non, options);
}
}
画像と同様にfileをIDで取得し、optionに入れ込む。
3.配信元アドレスと表示名称
これらもoptionにて対応可能。
function createEmailsDraft(){
const spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName("シート1"));
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
for(let i = 4; i <= lastRow; i++){
const image1 = DriveApp.getFileById('1YgYwsG9dtrown2pweKeHQLgXoDjzQvce').getBlob();
const company = sheet.getRange(i, 1).getValue();
const cid = sheet.getRange(i, 3).getValue();
const to = sheet.getRange(i, 2).getValue();
const name = sheet.getRange(i, 4).getValue();
const subject = sheet.getRange(1, 2).getValue();
const non = 'nonText'
const message = sheet.getRange(2, 2).getValue()
.replace('{社名}',company)
.replace('{cid}',cid)
.replace('{氏名}',name);
/* 差出人の表示名とメールアドレスを指定 */
const fromname = "差出人表示名";
const fromaddress = 'test@rtest.jp'
/* optionに入れる */
const options = {
"htmlBody":message,
"inlineImages":{image1:image1},
from:fromaddress,
name:fromname
}
GmailApp.sendEmail(to, subject, non, options);
}
}
差出人メールアドレスは先にGmailで利用できるように登録する必要あり。上記記載例の通り、画像など他オプションと並列していくらでも書ける。
ざっとこんなもんです。おしまい。