見出し画像

[Google Apps Script]スプレットシートを参照してGmail下書きを作成する・ケース2

 大量のメールを送る作業において役に立つ自動化。GoogleスプレットシートとGmailを連携させるスクリプトを作りました。第二弾。

 スプレットシートに宛先メールアドレス一覧とメール本文を記載しておき、ボタンを押すと宛先メールアドレスの数のGmail下書きが作成される、というもの。送信は自動的に行わない(目視確認をしたい)。
 今回の例では、宛先メールアドレスはスプレットシートに一覧でまとめられていて、件名とメール本文、Bccを同じスプレットシートに書く運用です。

【完成イメージ】

スプレットシート完成イメージ
下書き一括作成実行時
下書きの中身

【やりたいこと】
・登録されている宛先メールアドレスの数だけ、同じ文面のGmail下書きを作成したい
・自動処理はスプレットシート上のボタンを押すだけの簡単操作が良い
・メール本文は特定箇所を強調(文字を大きく、色付け)したい
・送信メールには特定のメールアドレスをBCCに入れて同報したい
・仮に図のような例でスプレットシートの7行目に宛先メールアドレスを追加した場合、実行ボタンを押すと5件の下書きが作成される

【前提知識】最低限、下記を知っているのが望ましいです
スプレットシートのセルの数え方、配列変数の数え方
スプレットシートにボタンを配置してクリック時の機能を持たせる
htmlのタグによる文章の編集方法
※各リンク先をご参照下さい

【スクリプト例】

function myFunction() {
  let ssa = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = ssa.getActiveSheet();
  let range = sheet.getDataRange();
  let data = range.getValues();

  for(let i = 2; i<data.length; i++){
    let recipient = data[i][0]
    let subject = data[2][1]
    let body = data[2][2]
    let options ={
      "bcc":data[2][3],
      "htmlBody":body,
    };

    GmailApp.createDraft(recipient,subject,body,options)
  };
}

【ざっくり解説】
1行目:関数を宣言する
2行目:アクティブ(開いている)スプレットシートを指定する
3行目:アクティブなスプレットシートのシートを指定する
4行目:指定したシートに入力されいるデータ範囲を指定する
5行目:指定したデータ範囲のデータを取得する
   各セルの値をdata[行番号][列番号]という変数に入れる
7行目:登録した宛先メールアドレスの件数だけ、8〜16行目を繰り返す
   結果、登録宛先メールアドレスと同じ数のGmail下書きが作成される
8行目:"recipient"という変数に宛先メールアドレスを入れる
   今回、宛先メールアドレスはスプレットシートから取得する
9行目:"subject"という変数にメールの件名を入れる
   スプレットシートのセルB3の内容が変数"data[2][1]"に入っている
10行目:"body"という変数にメールの本文を入れる
   スプレットシートのセルC3の内容が変数"data[2][2]"に入っている
11行目:"options"という変数でメールのその他要素を入れる
   今回、BCCに入れるメールアドレス、メール本文がhtml形式である指定を行なっている。
12行目:BCCに入れるメールアドレスがスプレットシートのセルD3にあることを指定している。この内容が変数"data[2][3]"に入っている。
13行目:メール本文がhtml形式であることを指定している
16行目:8行目〜13行目の条件でGmail下書きを作成する

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