【コピペでOK】GoogleスプレッドシートとGASでGmail一斉送信!業務効率化マニュアル

このコンテンツは生成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コードの記述

  1. スプレッドシートのメニューバーから 「拡張機能」 > 「Apps Script」 をクリックします。
  2. コードエディタが開くので、既存のコードを削除し、以下のコードをすべてコピペしてください。
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の設定や、送信者名の変更が可能になります。

主なオプション一覧

オプション名説明
ccCCに含めるメールアドレス(カンマ区切りで複数指定可)
bccBCCに含めるメールアドレス
name受信トレイに表示される送信者名(デフォルトはGoogleアカウント名)
from送信元メールアドレス(Gmail設定でエイリアスとして追加済みのアドレスのみ指定可)
replyTo返信先メールアドレス(送信元と異なるアドレスに返信させたい場合)
noReplytrueに設定すると、返信不可のアドレスから送信される(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:実行と承認

  1. コードを貼り付けたら、フロッピーアイコン(💾)をクリックして保存します。
  2. 上部のプルダウンが「sendBulkEmails」になっていることを確認し、「実行」ボタンを押します。
  3. 初回のみ「承認が必要」というポップアップが出ます。
  • 「権限を確認」をクリック
  • 自分のGoogleアカウントを選択
  • 「このアプリはGoogleによって確認されていません」と出たら、左下の「詳細」をクリックし、「(プロジェクト名)に移動(安全ではないページ)」をクリック
  • 「許可」をクリック

これでスクリプトが動き出し、E列に「送信済み」と表示されれば成功です!

4. 運用上のポイント

いきなり本番データで送信するのは危険です。以下の手順でテストを行ってください。

  1. テストデータの作成: 自分のメールアドレスを宛先にしたテスト行を作成する。
  2. 本文の確認: 変数(会社名や結果など)が正しく埋め込まれているか確認する。
  3. 本番実行: 問題なければ本番データを入力して実行する。

まとめ

GoogleスプレッドシートとGASを活用すれば、高価なツールを導入しなくても、柔軟なメール一斉送信システムを構築できます。

  • 個別情報を埋め込めるので、丁寧な印象を与えられる
  • コピペ作業から解放され、業務時間を大幅に削減できる
  • 送信履歴がシートに残るので管理が楽

ぜひ、毎月の定型業務やイベントの連絡などに活用してみてください。まずは自分宛てのテスト送信から始めてみましょう!