< Back

【大量のGmailを一括下書き作成】スプレッドシートから管理するスクリプトを書いたので使ってほしい。

Gmailで大量の送信先にメールを送るときにスプレッドシートで管理するスクリプトを書いたので使ってほしい。

スクショはこんな感じ。

スクリーンショット 2020-03-14 15.29.04.png

下書き作成 ぼたんポチすると

スクリーンショット 2020-03-14 15.32.25.png

Gmail側に下書きが保存されます。目で目視してから使ってくれ。

FAQ

  • BCCじゃだめなんですか?
    • Toでたくさん贈りたいときもあるよね…??
  • え、もしかして ひとつひとつの宛先ごとにメール作ってくれるの?
    • そうです!
  • プログラムから実行すると、間違ったときに不安!!!
    • 大丈夫です。下書き GmailApp.createDraft(to, subject, body) で作ってます!
    • 自分の目で確認してから、Gmailから送信ボタンぽちぽちしてください。
  • 悪いことに使っていい?
    • 絶対にやめてください。特定電子メール法に則って使ってください。

共有

ファイルを共有したので自分のドライブにコピーして使ってほしいです。
共有リクエストしないでくださいね〜

↓共有リクエストくるたびにメールきてます。

スクリーンショット 2023-01-15 21.14.32.png

あ、もちろん実際に使われているコードがどんなのか見てから使ってほしいのと、Gmailから権限要求されるので適切に許可してあげてほしい。

実装

/** *****************************************
[ [ '項目', '内容', 'To', 'Name' ],
  [ '件名', 'XXXXの件について', 'example@example.com', '開発室example さま' ],
  [ '書き出し', '', 'example+123@example.com', '総務 田中 さま' ],
  [ '本文', '', '', '' ],
  [ 'To欄の数', 2, '', '' ] ]
***************************************** */
const allData = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

/** *****************************************
['XXXXの件について', '本文']
***************************************** */
const commonData = allData.filter(x => (x[0] === "件名" || x[0] === "本文")).map(x => x[1]);

/** *****************************************
[ [ 'tanaka@example.com', '開発室example さま' ],
  [ 'AAA@example.com', '総務 田中 さま' ] ]
***************************************** */
const toMailData = allData.filter(x => (x[2] !== "To" && x[2] !== "")).map(x => [x[2], x[3]])

function createDraft() {
  const subject = commonData[0];

  // GmailApp.createDraft(["hirao@openlogi.com", "hirao+2@openlogi.com"], subject, "body test");

  toMailData.forEach(async x => {
    console.log(x[0]);
    const to = x[0];
    const body = createBody(x[1]);
    await GmailApp.createDraft(to, subject, body);
  })
}

/**
 * @todo メッセージ本文入れたり署名欄とか拡張する
 */
function createBody(name) {
  return name + "\n\n" + commonData[1];
}

下書き作成 ってボタンをスプレッドシート内のGASの関数 createDraft に紐づけています。

発火したら、今ひらいているページのデータを読み込みにいってメール送信するので、こんな感じでどんどんタブを追加していって、どの時はどの人たちにメールを送ったのか、そういう履歴もわかりますです。

スクリーンショット 2020-03-14 15.30.10.png

以上。

今日さくっと作ったやつですが、必要な方いたら使ってください。