見出し画像

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で利用できるように登録する必要あり。上記記載例の通り、画像など他オプションと並列していくらでも書ける。

ざっとこんなもんです。おしまい。

この記事が気に入ったらサポートをしてみませんか?