ADVERTISEMENT

【Googleスプレッドシート】メール一斉送信の宛先管理!GAS+Gmailでの差込メール

【Googleスプレッドシート】メール一斉送信の宛先管理!GAS+Gmailでの差込メール
🛡️ 超解決

Googleスプレッドシートで顧客や会員へ一斉にメールを送りたいけれど、一件ずつ送ると時間がかかります。また、宛先を間違えたり同じ内容を繰り返し書くのも面倒です。この記事では、Google Apps Script(GAS)とGmailを組み合わせて、スプレッドシートのデータを元に差込メールを自動で一斉送信する方法を解説します。手順をそのまま実行すれば、手作業の手間を大幅に減らせます。

【要点】スプレッドシートからGASを使って差込メールを一斉送信する流れ

  • Google Apps Script(GAS)のコードを記述: スプレッドシートのデータを読み取り、Gmailで送信するスクリプトを作成します。
  • テンプレートとデータの対応付け: シートの列(氏名、メールアドレスなど)をメール本文に差し込む変数として設定します。
  • Gmailの送信制限を考慮: 1日あたりの送信上限やエラー処理を実装して確実に送信します。

ADVERTISEMENT

GASとGmailで差込メールを送信する仕組み

Google Apps Scriptは、Googleのサービスを自動化するためのスクリプト言語です。スプレッドシートのデータを配列として取得し、GmailAppクラスを使ってメールを送信します。差込メールでは、スプレッドシートの各行に顧客名や製品名などの個別データを用意し、メール本文のテンプレート内に変数として埋め込みます。スクリプトが各行をループしながら、対応する変数を実際の値に置き換えて送信します。これにより、数十件から数百件のメールを一度に、しかも個人別の内容で送れるようになります。事前にスプレッドシートの準備とスクリプトの記述が必要ですが、一度セットアップすれば繰り返し使えます。

差込メールを実装する具体的な手順

ここでは、実際にスプレッドシートからメールを一斉送信するための手順を説明します。以下の操作を順に行ってください。

1. スプレッドシートの準備

  1. シートにデータを入力する
    新しいスプレッドシートを作成し、1行目に見出し行を設定します。例として「氏名」「メールアドレス」「商品名」「価格」など、差し込みたい項目を列に並べてください。2行目以降に実際のデータを入力します。メールアドレス列は必ず正しい形式で入力します。
  2. メール本文のテンプレートを用意する
    シート内の別の場所(例:シート2)に送信するメールの雛形を書いておきます。差し込み部分はプレースホルダーとして {{氏名}} {{商品名}} のように記述します。

2. GASエディタを開いてスクリプトを記述

  1. 拡張機能メニューからスクリプトエディタを開く
    スプレッドシートのメニューバーから「拡張機能」→「Apps Script」をクリックします。新規プロジェクトが開きます。
  2. コードを記述する
    デフォルトのコードを以下のサンプルに置き換えます。このコードはシート1のデータを読み取り、シート2のテンプレートを使ってメールを送信します。メールの件名と本文を適宜編集してください。
function sendMail() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const dataSheet = ss.getSheetByName('シート1');
  const templateSheet = ss.getSheetByName('シート2');
  const data = dataSheet.getDataRange().getValues();
  const template = templateSheet.getRange(1,1).getValue();
  
  for (let i = 1; i < data.length; i++) { // 1行目は見出し
    const row = data[i];
    const name = row[0];
    const email = row[1];
    const product = row[2];
    const price = row[3];
    
    let body = template;
    body = body.replace('{{氏名}}', name);
    body = body.replace('{{商品名}}', product);
    body = body.replace('{{価格}}', price);
    
    const subject = '【重要】' + product + 'のお知らせ';
    GmailApp.sendEmail(email, subject, body);
  }
}

3. スクリプトを実行する

  1. 権限を承認する
    初回実行時には、スクリプトがメールの送信やスプレッドシートへのアクセスを許可するよう求められます。「権限を確認」→「許可」と進みます。自分のアカウントであることを確認してください。
  2. 関数を実行する
    スクリプトエディタのツールバーで関数名「sendMail」を選択し、再生ボタンをクリックします。実行ログにエラーが表示されなければ成功です。実際にメールが送信されます。

注意点とよくあるトラブル

Gmailの送信制限に注意する

Gmailには1日あたりの送信上限があります。無料アカウントでは500通、Google Workspaceアカウントでは2,000通(上限は環境により変動)です。大量に送信する場合は、スクリプト内で Utilities.sleep を使って一定時間待機させるなどの調整が必要です。また、短時間に大量送信するとアカウントが一時的に制限される可能性もあります。

メールアドレスの形式が不正だとエラーになる

送信先のメールアドレスが空欄だったり、@記号がないなどの誤りがあるとスクリプトが停止します。事前にメールアドレス列のデータを確認し、必要に応じてエラーハンドリングを追加しましょう。例えば、if (email === ”) continue; のように空欄行をスキップする処理を入れます。

テンプレートのプレースホルダーが正しく置換されない

プレースホルダーの記述が全角・半角の違いや余分なスペースで一致しない場合、置換されずに {{氏名}} のまま送信されます。テンプレートとスクリプト内の文字列を完全に一致させることが重要です。コピー&ペーストで統一するとミスが減ります。

ADVERTISEMENT

GASを使った一斉送信と手動送信の比較

項目 GASを使った一斉送信 手動送信
作業時間 一度の実行で完了、数分 一件ずつ作成・送信、数十分〜数時間
ミスのリスク コードに問題がなければ正確 宛先間違いや入力ミスが発生しやすい
差し込みの自由度 任意の列を自由に差し込み可能 コピー&ペーストの手間が増える
再送信の容易さ スクリプトを再実行するだけでOK 最初からやり直し

まとめ

スプレッドシートとGASを組み合わせることで、手作業では時間のかかる差込メールの一斉送信を自動化できます。一度スクリプトをセットアップすれば、データを更新するだけで何度でも使えるため、業務効率が大幅に向上します。今回紹介したサンプルコードをベースに、件名や本文のテンプレートをカスタマイズしてみてください。また、送信前にテスト用の小さなデータで動作確認をすることをおすすめします。さらに応用として、添付ファイルの追加や条件分岐による送信制御も可能です。ぜひスクリプトを編集して、自分だけのメール自動送信システムを作り上げてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。