Google Apps Scriptでスプレッドシートから一括メール送信する方法【完全解説】

目次

はじめに:この記事で解決できる課題

メール配信業務でこのような悩みを抱えていませんか?

  • 顧客リストに基づいて大量のメールを個別に送信したい
  • 手動でのメール送信作業を自動化したい
  • スプレッドシートのデータを活用してメール配信を効率化したい
  • 専門的なメール配信ツールを使わずにGmailで一括送信したい

この記事では、Google Apps Scriptを使ってスプレッドシートからGmailで一括メール送信を行う方法を、コード付きで詳しく解説します。初心者の方でも実際に使えるよう、ステップバイステップで説明していきます。

Google Apps Scriptとは

Google Apps Script(GAS)は、Googleが提供するクラウドベースの開発プラットフォームです。JavaScriptベースの言語を使用して、Googleのサービス(Gmail、スプレッドシート、ドキュメントなど)を自動化できます。

Google Apps Scriptの主な特徴

  • 無料で使用可能
  • Googleアカウントがあれば誰でも利用可能
  • クラウド上で動作するため、インストール不要
  • Googleサービスとの連携が簡単

実装方法:ステップバイステップガイド

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

新しいGoogleスプレッドシートを作成し、以下のような構成でデータを入力します:

A列B列C列D列
ID備考受信者名メールアドレス
1顧客A田中太郎tanaka@example.com
2顧客B佐藤花子sato@example.com

重要:このコードは3行目からデータを読み込むため、1行目と2行目はヘッダーとして使用し、3行目以降に実際の送信データを入力してください。

ステップ2: Google Apps Scriptエディタの起動

スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択して、スクリプトエディタを開きます。

ステップ3: コードの実装

以下のコードをスクリプトエディタにコピー&ペーストします:

function sendEmail() {
 var SheetName = SpreadsheetApp.getActiveSheet(); //アクティブなシートを取得する
 var SheetRow = SheetName.getDataRange().getLastRow(); //シート上のデータが存在する範囲を自動で判別して取得し、データが存在する最後の行番号を取得する

//  var strDoc = getBody().getText(); //ドキュメントのBody(内容)を取得する
 var strSubj = `メールのタイトルが入ります`; //タイトル

 for (var i = 3; i <= SheetRow; i++) {
   var strName = SheetName.getRange(i,3).getValue(); //受信者名を変数strNameに格納
   var strToAd = SheetName.getRange(i,4).getValue(); //メールアドレスを変数strToAdに格納

  //  var strBody = strDoc.replace(/{受信者名}/, strName); //メールの宛名{受信者名}を、を変数strNameに置き換え
   var strBody = `
メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。メールの本文が入ります。

`;

   GmailApp.sendEmail(strToAd, strSubj, strBody, {
     from: strFrom='送信元アドレスが入ります', //送信元アドレス(所有者のGoogleアカウント)
     name: strSend='送信者名が入ります', //送信者名(受信者に表示されます)
   });
 }
}

コードの詳細解説

変数とデータ取得部分

var SheetName = SpreadsheetApp.getActiveSheet(); //アクティブなシートを取得する

この部分では、現在アクティブなスプレッドシートとデータが存在する最後の行番号を取得しています。

メール件名の設定

 var strSubj = `メールのタイトルが入ります`; //タイトル

送信するメールの件名を設定します。実際の使用時は、この部分を適切な件名に変更してください。

ループ処理とデータ読み込み

 for (var i = 3; i <= SheetRow; i++) {
   var strName = SheetName.getRange(i,3).getValue(); //受信者名を変数strNameに格納
   var strToAd = SheetName.getRange(i,4).getValue(); //メールアドレスを変数strToAdに格納

3行目から最後の行まで繰り返し処理を行い、各行のC列(受信者名)とD列(メールアドレス)のデータを取得します。

メール送信処理

   GmailApp.sendEmail(strToAd, strSubj, strBody, {
     from: strFrom='送信元アドレスが入ります', //送信元アドレス(所有者のGoogleアカウント)
     name: strSend='送信者名が入ります', //送信者名(受信者に表示されます)
   });

GmailApp.sendEmail関数を使用してメールを送信します。パラメータは以下の通りです:

  • strToAd: 送信先メールアドレス
  • strSubj: メール件名
  • strBody: メール本文
  • from: 送信者のメールアドレス
  • name: 送信者として表示される名前

実際の使い方

1. コードのカスタマイズ

実際に使用する前に、以下の部分を適切に変更してください:

変更が必要な箇所

  • メール件名: 「メールのタイトルが入ります」を実際の件名に変更
  • メール本文: 「メールの本文が入ります…」を実際の本文に変更
  • 送信元アドレス: 「送信元アドレスが入ります」をあなたのGmailアドレスに変更
  • 送信者名: 「送信者名が入ります」を表示したい送信者名に変更

2. 権限の許可

初回実行時には、Gmailへのアクセス権限を求められます。「許可」をクリックして権限を付与してください。

3. テスト実行

注意:本格運用前に、必ず少数の宛先でテスト実行を行ってください。間違った内容で大量送信してしまうリスクを避けるためです。

応用テクニック

個人名を本文に挿入する方法

メール本文に受信者の名前を挿入したい場合は、以下のようにコードを修正できます

var strBody = ` ${strName}様 いつもお世話になっております。 この度は貴重なお時間をいただき、ありがとうございます。 今後ともよろしくお願いいたします。 `;

条件付き送信

特定の条件を満たす場合のみメール送信を行いたい場合は、if文を追加できます

if (strToAd && strToAd !== "") { // メールアドレスが空でない場合のみ送信 GmailApp.sendEmail(strToAd, strSubj, strBody, { from: strFrom='送信元アドレス', name: strSend='送信者名', }); }

よくある質問・トラブルシューティング

Q1: メールが送信されません

A: 以下の点を確認してください:

  • Gmailへのアクセス権限が付与されているか
  • 送信元アドレスが正しく設定されているか
  • スプレッドシートのデータ形式が正しいか

Q2: 一度に送信できるメール数に制限はありますか?

A: Google Apps Scriptには以下の制限があります:

  • 1日あたり100通まで(無料アカウント)
  • Google Workspace アカウントの場合は1500通まで

Q3: エラーが発生した場合はどうすればいいですか?

A: スクリプトエディタの「実行ログ」でエラー内容を確認し、以下を確認してください:

  • スプレッドシートの列構成が正しいか
  • メールアドレスの形式が正しいか
  • 送信権限があるメールアドレスを使用しているか

Q4: HTMLメールを送信できますか?

A: はい、可能です。GmailApp.sendEmail関数のオプションに「htmlBody」パラメータを追加してください:

GmailApp.sendEmail(strToAd, strSubj, strBody, { from: strFrom, name: strSend, htmlBody: '<h1>HTMLメール</h1><p>HTMLの本文</p>' });

セキュリティとベストプラクティス

重要な注意事項

  • 送信前に必ず宛先と内容を確認する
  • 個人情報を含むスプレッドシートの共有設定に注意する
  • 大量送信時はGoogleの利用規約を遵守する
  • 受信者の同意なしにメールを送信しない

まとめ

Google Apps Scriptを使用したスプレッドシートからの一括メール送信は、以下のようなメリットがあります:

  • コスト効率: 無料で利用可能
  • 簡単な設定: 複雑な設定やインストールが不要
  • Googleサービス連携: スプレッドシートとGmailをシームレスに連携
  • カスタマイズ性: JavaScriptで柔軟にカスタマイズ可能

この記事で紹介したコードを基に、あなたのビジネスニーズに合わせてカスタマイズしてください。メール配信の自動化により、作業効率を大幅に向上させることができるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次