見出し画像

Gmailを一斉送信するとき個別に添付ファイルを送りたい。GAS(Google Apps Script)

スプレッドシートにあるメールリストに一斉送信したい。BCCでは送りたくない。本文にはそれぞれの所属と名前を入れたい。添付ファイルも付けたい。

以前、そのような場合にGmailを一斉送信するGoogle Apps Scriptを紹介しました。

しかしみなさん、同一ファイルを全員に送るのではなく、個別に違う添付ファイルを送りたいと思ったことはないですか?

今回の記事ではそのようなときに使えるGAS(Google Apps Script)を紹介します。前回の記事で紹介したスクリプトの一部を変更するだけで簡単にできますので、ぜひ挑戦してみてください。


1. まずは個別に送るファイルを用意しましょう。

スクリーンショット 2022-03-18 21.36.20

こんな感じで、個別のファイルに名前をつけおきましょう。

マイドライブ内に同一名のファイルがあると誤作動を起こす恐れがあるのでお気をつけください。


2. スプレッドシートにファイル名を入力しましょう。

スクリーンショット 2022-03-18 21.40.10

スプレッドシートのD列に、個別に送るファイルを入力します。拡張子(.pdfなど)も忘れずに記入してください。


3. 前回紹介したスクリプトを書き換えましょう。

スクリーンショット 2022-03-18 21.31.04

↑スプレッドシートのD列(4番目の列)の値を取得するスクリプトを追加します。

スクリーンショット 2022-03-18 21.45.55

↑.getFileByName(fileName)とすることで、D列に入力されたファイル名のファイルを取得することができます。

コピペ用のコードはこちら↓

function sendMail(){

const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();

const DOC_URL = 'ここにドキュメントのURLをペーストします'; 
const doc = DocumentApp.openByUrl(DOC_URL);
const docText = doc.getBody().getText();

const subject = 'こちらにタイトルを入力します。';

for(let i = 2; i <= lastRow; i++){

  const namae = sheet.getRange(i, 1).getValue(); 
  const syozoku = sheet.getRange(i, 2).getValue();
  const address = sheet.getRange(i, 3).getValue();
  const fileName = sheet.getRange(i, 4).getValue();

  
  const body = docText
    .replace('{所属}',syozoku)
    .replace('{名前}',namae);
  
var tempu = DriveApp.getFilesByName(fileName).next();
  
GmailApp.sendEmail(address, subject, body, {
  name: '送信者の表示名',bcc: 'BCCで送るメールアドレス',
  attachments: [tempu]});
}
}

実際に送る前に、自身のメールに送ってみるなどしてプログラムが正常に動作するかご確認ください。


GAS (Google Apps Script)を駆使すればさまざまな作業が自動化でき、仕事効率が高まります。ぜひいろんな書籍を読んで学んでみてください。

おすすめはこちら↓


スキ&フォローお願いします。

Adios.

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