※このコンテンツは生成AIによって作成されています。
「数百人の顧客に、個別のお知らせメールを送りたい」
「セミナーの抽選結果を一人ひとりに通知したい」
ビジネスの現場では、こうしたメール送信業務が発生することが多々あります。BCCで一斉送信するのはマナー違反や誤送信のリスクがありますし、かといって1件ずつコピペして送信するのは膨大な時間がかかります。
そこで活用したいのが、GoogleスプレッドシートとGoogle Apps Script(GAS)を組み合わせたメール自動送信システムです。
今回は、エンジニアでなくても実装できるように、コピペで使えるコード付きで解説します。この仕組みを導入して、ルーチンワークを劇的に効率化しましょう。
1. どのようなシーンで有効? GASメール送信の活用事例
GASを使ったメール送信の最大のメリットは、「宛先ごとに本文の一部(名前や合否結果など)を差し替えて送信できること」です。
具体的には、以下のようなビジネスシーンで威力を発揮します。
① キャンペーンやイベントの抽選結果通知
例えば、プレゼント企画や限定セミナーへの応募者に対し、「当選」「落選」の結果を通知する場合です。
スプレッドシート上の「結果列」のデータを読み込み、Aさんには「当選おめでとうございます」、Bさんには「残念ながら今回は…」といった本文の出し分けが可能になります。
② 請求書や支払い期日のリマインド
顧客ごとに異なる「請求金額」や「支払期限」を本文に挿入して一斉送信できます。
「〇〇様、今月の請求額は ¥10,000 です」のように、個別の情報を埋め込めるため、事務的な連絡コストを大幅に削減できます。
③ 会員限定のお知らせ・ニュースレター
宛名(会社名や個人名)を件名や本文の冒頭に入れることで、開封率の向上を狙ったメルマガ配信にも活用できます。
2. 【重要】実装前の注意点とGmailの送信制限
非常に便利な機能ですが、Googleのサービスを利用する上で知っておくべき制限があります。これを知らずに大量送信すると、アカウントが停止されるリスクがあるため、必ずご確認ください。
1日の送信数制限
Gmail(GAS)には、1日あたりのメール送信数に上限があります。
- 無料のGoogleアカウント(@gmail.com): 1日あたり 最大100通 程度推奨(公式上限は500通ですが、GAS経由だと制限がかかりやすいです)
- Google Workspace(有料アカウント): 1日あたり 最大1,500〜2,000通
※制限を超えると、その日はメールが送れなくなります。数千件規模のリストに送る場合は、専用のメルマガ配信スタンド(SendGridや配配メールなど)の利用を検討してください。
スパム判定のリスク
短時間に大量のメールを送信したり、受信者から「迷惑メール」として報告されたりすると、Googleからスパム認定される可能性があります。
あくまで「既存の取引先」や「同意を得た顧客」への連絡手段として活用しましょう。
3. 実践!メール一斉送信システムの作り方
それでは、実際にシステムを作っていきましょう。手順は大きく分けて「スプレッドシートの準備」と「スクリプトの作成」の2ステップです。
ステップ1:スプレッドシートの準備
まず、Googleスプレッドシートを新規作成し、1行目をヘッダーとして以下の項目を入力してください。
| 行番号 | A列 | B列 | C列 | D列 | E列 |
| 1 | 会社名 | 担当者名 | メールアドレス | 結果 | 送信ステータス |
| 2 | 〇〇株式会社 | 山田 太郎 | yamada@example.com | 当選 | |
| 3 | △△合同会社 | 佐藤 花子 | sato@example.com | 落選 |
- D列(結果): ここに入力された内容を本文に反映させます。
- E列(送信ステータス): 送信が完了すると自動的に「送信済み」と書き込まれるようにします(二重送信防止のため)。
ステップ2:GASコードの記述
- スプレッドシートのメニューバーから 「拡張機能」 > 「Apps Script」 をクリックします。
- コードエディタが開くので、既存のコードを削除し、以下のコードをすべてコピペしてください。
function sendBulkEmails() {
// 1. アクティブなシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 2. データの最終行を取得
const lastRow = sheet.getLastRow();
// 3. データを一括取得(ヘッダー行を除くため2行目から)
// 範囲指定: 2行目, 1列目から, データがある行数-1, データがある列数
const dataRange = sheet.getRange(2, 1, lastRow - 1, 5);
const data = dataRange.getValues();
// 4. 一行ずつループ処理
for (let i = 0; i < data.length; i++) {
const row = data[i];
// 変数の割り当て(列番号-1)
const company = row[0]; // A列: 会社名
const name = row[1]; // B列: 担当者名
const email = row[2]; // C列: メールアドレス
const result = row[3]; // D列: 結果
const status = row[4]; // E列: 送信ステータス
// すでに送信済みの場合はスキップ
if (status === '送信済み') {
continue;
}
// メール本文の作成(テンプレート)
const subject = "【重要】抽選結果のお知らせ";
const body = `${company}\n${name} 様\n\n`
+ `いつも大変お世話になっております。\n`
+ `株式会社サンプル、イベント事務局です。\n\n`
+ `先日は弊社イベントにお申し込みいただき、誠にありがとうございました。\n`
+ `厳正なる抽選の結果、貴社は【${result}】となりましたことをお知らせいたします。\n\n`
+ `--------------------------------------------------\n`
+ `本メールはシステムより自動送信されています。\n`
+ `--------------------------------------------------`;
// 5. メール送信実行
try {
if (email) { // メールアドレスがある場合のみ送信
GmailApp.sendEmail(email, subject, body);
// 6. 送信ステータスを更新(i + 2 行目の5列目)
sheet.getRange(i + 2, 5).setValue('送信済み');
// 連続送信制限に引っかからないよう少し待機(1秒)
Utilities.sleep(1000);
}
} catch (e) {
console.error('送信エラー: ' + email, e);
sheet.getRange(i + 2, 5).setValue('エラー');
}
}
Browser.msgBox("メールの一斉送信が完了しました。");
}【応用】CC・BCC・送信者名の設定方法
GmailApp.sendEmail メソッドには、第4引数として options オブジェクトを設定することができます。これを使うと、ビジネスメールで必須となるCC/BCCの設定や、送信者名の変更が可能になります。
主なオプション一覧
| オプション名 | 説明 |
| cc | CCに含めるメールアドレス(カンマ区切りで複数指定可) |
| bcc | BCCに含めるメールアドレス |
| name | 受信トレイに表示される送信者名(デフォルトはGoogleアカウント名) |
| from | 送信元メールアドレス(Gmail設定でエイリアスとして追加済みのアドレスのみ指定可) |
| replyTo | 返信先メールアドレス(送信元と異なるアドレスに返信させたい場合) |
| noReply | trueに設定すると、返信不可のアドレスから送信される(Google Workspaceアカウント限定) |
| attachments | 添付ファイル(Blob形式のデータ配列を指定) |
コードの書き換え例
例えば、「上長をCCに入れたい」「送信者名を『〇〇事務局』にしたい」という場合は、先ほどのコードの GmailApp.sendEmail 部分を以下のように書き換えてください。
// オプションの定義
const options = {
cc: 'manager@example.com', // CCを設定
bcc: 'archive@example.com', // BCCを設定
name: '株式会社サンプル イベント事務局', // 送信者名をカスタマイズ
replyTo: 'info@example.com' // 返信先を代表アドレスにする
};
if (email) {
// 第4引数に options を追加して送信
GmailApp.sendEmail(email, subject, body, options);
// ...(以下同じ)これにより、受信者には「山田 太郎」のような個人名ではなく、「株式会社サンプル イベント事務局」という名前でメールが届くようになり、より信頼性が高まります。
ステップ3:実行と承認
- コードを貼り付けたら、フロッピーアイコン(💾)をクリックして保存します。
- 上部のプルダウンが「sendBulkEmails」になっていることを確認し、「実行」ボタンを押します。
- 初回のみ「承認が必要」というポップアップが出ます。
- 「権限を確認」をクリック
- 自分のGoogleアカウントを選択
- 「このアプリはGoogleによって確認されていません」と出たら、左下の「詳細」をクリックし、「(プロジェクト名)に移動(安全ではないページ)」をクリック
- 「許可」をクリック
これでスクリプトが動き出し、E列に「送信済み」と表示されれば成功です!
4. 運用上のポイント
いきなり本番データで送信するのは危険です。以下の手順でテストを行ってください。
- テストデータの作成: 自分のメールアドレスを宛先にしたテスト行を作成する。
- 本文の確認: 変数(会社名や結果など)が正しく埋め込まれているか確認する。
- 本番実行: 問題なければ本番データを入力して実行する。
まとめ
GoogleスプレッドシートとGASを活用すれば、高価なツールを導入しなくても、柔軟なメール一斉送信システムを構築できます。
- 個別情報を埋め込めるので、丁寧な印象を与えられる
- コピペ作業から解放され、業務時間を大幅に削減できる
- 送信履歴がシートに残るので管理が楽
ぜひ、毎月の定型業務やイベントの連絡などに活用してみてください。まずは自分宛てのテスト送信から始めてみましょう!
