業務で同じようなメールを何度も送るのはうんざりしますよね・・・
そんな時に便利なのが、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 を使用してメールを送信します。
主な処理は以下の流れで行われます。
- スプレッドシートのデータを取得
- 2行目のA列のメールアドレス宛に、B列の件名、C列の本文を送信
- 送信が出来たらD列に”送信済み”と入力、失敗したらD列に”送信失敗”と入力
- 次の行も同じように処理し、データが入力されている最後の行まで繰り返し
この後、具体的なGASのコードを紹介します。
【コピペOK】スプレッドシートからメールを送るGASコード
GASを設定する方法
スプレッドシートの上部のメニューから、拡張機能>Apps Scriptをクリックします。

すると、スクリプトエディタが起動します。
デフォルトで入力されているコードを削除し、次の見出しで紹介するコードを貼り付けて、保存・実行すれば、スクリプト実行されます。
初回は認証を求められますが、案内に沿って進めるだけで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の追加、添付ファイルの追加など、カスタマイズ次第でさらに便利に
この方法を活用し、日々の業務効率を向上させてみてください!