はじめに:この記事で解決できる課題
メール配信業務でこのような悩みを抱えていませんか?
- 顧客リストに基づいて大量のメールを個別に送信したい
- 手動でのメール送信作業を自動化したい
- スプレッドシートのデータを活用してメール配信を効率化したい
- 専門的なメール配信ツールを使わずに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で柔軟にカスタマイズ可能
この記事で紹介したコードを基に、あなたのビジネスニーズに合わせてカスタマイズしてください。メール配信の自動化により、作業効率を大幅に向上させることができるでしょう。
