GoogleAppsScriptでメールを一斉送信!スプレッドシートを活用した時短術【テンプレート付き】

Automation

業務で同じようなメールを何度も送るのはうんざりしますよね・・・
そんな時に便利なのが、Google Apps Script(GAS)を活用したスプレッドシートからの一斉メール送信です。

本記事では、スプレッドシートに入力したメールアドレス・件名・本文をもとに、GASを使ってメールを一括送信する方法を解説します。GAS初心者の方でも簡単に実装できるように、コピペ可能なテンプレートも用意しました。

そもそもGoogle Apps Script(GAS)って何?という方は、以下の記事を先に読んでみてください!


GASを使ってスプレッドシートからメールを自動送信する方法

なぜGASを使うのか?

メールの一斉送信は様々な製品で行うことが可能です。
GASを活用することで、Googleスプレッドシートのデータを基にメールを一括送信できます。
特に以下のような場面で役立ちます。

  • 無料で導入できる:Googleアカウントがあれば追加費用なしで実行可能
  • リストの管理が容易:スプレッドシート上で送信先リストの管理、送信を完結
  • 件名/本文を可変にできる:スプレッドシート内の値を使って件名/本文を変更
  • GoogleFormsなどと組み合わせられる:問合せお礼メールの自動送信も可能

一般的なツールであれば、ツールに送信先リストをアップロードする必要がありますが、GASであれば、スプレッドシートを直接参照することが可能です。
また一般的なツールには、可変にできる範囲が限られていますが、スプレッドシートであれば、制限がありません。

さらには、以下のように数式に参照するセルを含めると、対象のセルの値を引用してた文章作成が可能となります。

=A2&"宛のメール送信テストです。"

A2セルにメールアドレスを記載すると、「example@example.com宛のメール送信テストです。」となります。
これを応用すると、相手の名前や会社名、契約期間や契約金額、利用しているサービス名などを含めた本文が作成可能になります。


スプレッドシートを使ったGASメール送信の仕組み

スプレッドシートの準備

まず、Googleスプレッドシートを準備し、以下のようなフォーマットでデータを入力します。

A列(メールアドレス)B列(件名)C列(本文)
example@example.com件名サンプル1本文サンプル1
test@test.com件名サンプル2本文サンプル2
  • 1行目は列名(A列:メールアドレス、B列:件名、C列:本文)
  • 2行目以降に送信対象のデータを記入

GASコードの概要

GASでは、Googleスプレッドシートのデータを取得し、MailApp.sendEmail を使用してメールを送信します。

主な処理は以下の流れで行われます。

  1. スプレッドシートのデータを取得
  2. 2行目のA列のメールアドレス宛に、B列の件名、C列の本文を送信
  3. 送信が出来たらD列に”送信済み”と入力、失敗したらD列に”送信失敗”と入力
  4. 次の行も同じように処理し、データが入力されている最後の行まで繰り返し

この後、具体的なGASのコードを紹介します。


【コピペOK】スプレッドシートからメールを送るGASコード

GASを設定する方法

スプレッドシートの上部のメニューから、拡張機能>Apps Scriptをクリックします。

AppsScriptの設定画面に行く

すると、スクリプトエディタが起動します。
デフォルトで入力されているコードを削除し、次の見出しで紹介するコードを貼り付けて、保存・実行すれば、スクリプト実行されます。
初回は認証を求められますが、案内に沿って進めるだけでOKです。

GASの全コード

以下のGASコードをGoogleスプレッドシートに設定することで、リスト化されたメールアドレスにメールを自動送信できます。

function selectAndSendEmails() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues(); // シート全体のデータを取得

  for (var i = 1; i < data.length; i++) { // 1行目はヘッダーなのでスキップ
    var email = data[i][0];  // A列 (メールアドレス)
    var subject = data[i][1]; // B列 (件名)
    var body = data[i][2]; // C列 (本文)
    var statusCell = sheet.getRange(i + 1, 4); // D列 (送信履歴)

    if (email && subject && body && statusCell.getValue() !== "送信済み") { // 送信履歴が「送信済み」でない場合のみ実行
      try {
        MailApp.sendEmail({
          to: email,
          subject: subject,
          body: body
        });
        statusCell.setValue("送信済み"); // 送信成功時に記録
        Logger.log("メール送信成功: " + email);
      } catch (e) {
        statusCell.setValue("送信失敗"); // 送信失敗時に記録
        Logger.log("エラー発生: " + email + " - " + e.message);
      }
    }
  }
}

このコードをスクリプトエディタに貼り付けて実行すれば、スプレッドシート内のデータを基にメールが送信されます。


実行方法と運用のポイント

GASを実行する方法(手動&自動)

大きく3つの方法があります。

  • スクリプトエディタの画面から手動で実行
  • スプレッドシート内の図形にスクリプトを割り当てて、図形がクリックされたら実行
  • トリガーを設定し、条件に従って自動実行

状況によりますが、図形に割り当てる、もしくはトリガー設定がお勧めです。

例えばですが、GoogleFormsの回答を記載するスプレッドシートにこのようなスクリプトを設定すれば、カスタマイズした問合せお礼メールを自動的に送ることも可能となります。

リストを準備した上で一斉送信したい際には、図形への割り当てが便利です。
上部メニューの挿入>図形描画より任意の図形を挿入し、図形を右クリックすると出てくるメニューより、「スクリプトを割り当て」をクリックし、「selectAndSendEmails」と入力します。


エラー対策・トラブルシューティング

  • 空白セルがある場合の対応
    • if (email && subject && body) で空白行をスキップするようにしています。
  • メール送信回数の上限(Gmail APIの制限)
    • Google Workspaceアカウントなら1日1,500通、無料アカウントなら1日100通までの送信が可能です。
    • 制限を超えないように適切にスケジュール設定が必要です。
  • 送信履歴を記録する
    • 実行した後は、いつ・どこにメールを送信したかの履歴を管理することで、後から問合せがあった際などに履歴を辿りやすくなります。

まとめ

  • GASを使えばスプレッドシートから簡単にメールを送信できる
  • 手動だけでなく、スケジュール設定をすれば自動化も可能
  • 関数を使えば、スプレッドシート上の値を引用したメールの自動作成が可能
  • HTMLメールやCC/BCCの追加、添付ファイルの追加など、カスタマイズ次第でさらに便利に

この方法を活用し、日々の業務効率を向上させてみてください!

この記事を書いた人
WorkHack

2015年に早稲田大学を卒業。コンサルティングファームに新卒入社し、業務・システム領域のコンサルティングに携わりました。その後、スタートアップ企業にジョインし、動画制作事業を立ち上げ、自社の収益の柱となるまで育て上げ、さらに情報システムの責任者としてCRMやMAなどのツール導入を行いました。現在はSaasのカスタマーサクセスに従事する傍ら、製品の活用率向上や自社の業務フロー変革の取り組みを行い、幅広い領域で貢献をしてきました。
営業やマーケティングのプレイヤーの経験や高い解像度とテクノロジーと業務変革の知見の両方を持ち、お客様の業務の変革に貢献致します。

WorkHackをフォローする
AutomationBlogBusiness Process
シェアする
タイトルとURLをコピーしました