GASでテンプレートを使った一括メール送信の方法

先生

GASでメール一斉送信を自動化!テンプレートを使えば、あっという間に大量のメールも効率的に送れるぞ!

GASでテンプレートメール送信:基本設定

GAS(Google Apps Script)は、Google Workspaceの様々なサービスを連携させ、自動化するための強力なツールです。特に、Gmailと組み合わせることで、パーソナライズされたメールを一括送信するシステムを簡単に構築できます。この記事では、GASを使ってテンプレートメールを送信する方法を初心者向けに解説します。

まず、Googleスプレッドシートを用意します。このスプレッドシートには、送信先のメールアドレスや、テンプレートに差し込むための情報(名前、会社名など)を格納します。例えば、以下のような構成にします。

A列:メールアドレス、B列:名前、C列:会社名

次に、GASのエディタを開きます。Googleスプレッドシートから「ツール」→「スクリプトエディタ」を選択すると、新しいGASプロジェクトが開きます。

このエディタに、メール送信のスクリプトを記述していきます。

GASスクリプトの記述:メール送信処理

GASエディタに以下のコードを記述します。このコードは、スプレッドシートからデータを読み込み、テンプレートに基づいてメールを作成し、送信する処理を行います。

// スプレッドシートのIDを設定
const SPREADSHEET_ID = 'YOUR_SPREADSHEET_ID';
// テンプレートのHTMLファイル名
const TEMPLATE_FILE_NAME = 'メールテンプレート';

function sendTemplateEmails() {
  const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  const sheet = ss.getSheetByName('シート1'); // シート名を指定
  const dataRange = sheet.getDataRange();
  const data = dataRange.getValues();

  // ヘッダー行をスキップ
  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    const emailAddress = row[0]; // A列:メールアドレス
    const name = row[1]; // B列:名前
    const company = row[2]; // C列:会社名

    // テンプレートHTMLを取得
    const template = HtmlService.createTemplateFromFile(TEMPLATE_FILE_NAME);

    // テンプレートに変数をセット
    template.name = name;
    template.company = company;

    // HTMLメールを作成
    const message = template.evaluate().getContent();

    // メール送信オプション
    const options = {
      htmlBody: message,
      subject: '【重要】〇〇のご案内' // 件名
    };

    // メールを送信
    GmailApp.sendEmail(emailAddress, options.subject, '', options);

    // 送信ログを記録(必要に応じて)
    sheet.getRange(i + 1, 4).setValue('送信済み'); // D列に送信済みの記録
    SpreadsheetApp.flush(); // スプレッドシートへの書き込みを即時反映

    Utilities.sleep(1000); // 1秒待機
  }
}

上記のコードをコピーし、YOUR_SPREADSHEET_IDを実際のスプレッドシートIDに置き換えてください。スプレッドシートIDは、スプレッドシートのURLに含まれています。

次に、TEMPLATE_FILE_NAMEを実際に作成するHTMLテンプレートファイルの名前に置き換えます。

メール送信の処理の中で、GmailApp.sendEmailを利用してメールを送信しています。第1引数に送信先メールアドレス、第2引数にオプションを渡しています。オプションには、件名(subject)とHTML形式の本文(htmlBody)を指定します。

送信ログの記録は任意です。送信状況を管理したい場合に、スプレッドシートに記録しておくと便利です。

メールテンプレートの作成

次に、HTML形式のメールテンプレートを作成します。GASエディタで、「ファイル」→「新規作成」→「HTMLファイル」を選択し、ファイル名をメールテンプレートとします。

作成したHTMLファイルに、以下のようなテンプレートを記述します。

<!DOCTYPE html>
<html>
  <head>
    <base target="_blank">
  </head>
  <body>
    <p>拝啓</p>
    <p><?= name ?>様</p>
    <p>いつもお世話になっております。</p>
    <p><?= company ?>の〇〇です。</p>
    <p>この度は、〇〇のご案内をさせていただきます。</p>
    <p>詳細は以下のリンクをご確認ください。</p>
    <a href="https://www.example.com">詳細はこちら</a>
    <p>敬具</p>
  </body>
</html>

このテンプレートでは、<?= name ?><?= company ?>の部分が、スプレッドシートから読み込んだデータで置き換えられます。HTMLメールの基本的な構造に従い、必要な情報を記述してください。

メールテンプレートは、HTMLとCSSを使って自由にデザインできます。画像やロゴを追加したり、フォントや色を変更したりすることも可能です。

GASの実行と承認

GASのコードを記述し、メールテンプレートを作成したら、GASを実行します。GASエディタのツールバーにある「実行」ボタンをクリックし、sendTemplateEmails関数を選択します。

初回実行時には、GASがGoogleアカウントへのアクセス許可を求めるダイアログが表示されます。必要な権限(Gmailの送信権限、スプレッドシートへのアクセス権限など)を許可してください。

承認が完了すると、GASが実行され、スプレッドシートのデータに基づいてメールが送信されます。送信状況は、スプレッドシートのD列(送信ログ)で確認できます。

エラー処理とデバッグ

GASの実行中にエラーが発生した場合は、GASエディタの「実行ログ」を確認し、エラーの原因を特定します。よくあるエラーとしては、スプレッドシートIDの間違い、シート名の誤り、メールアドレスの形式エラーなどがあります。

デバッグには、Logger.log()関数を使うと便利です。変数の値や処理の経過をログに出力することで、問題箇所を特定しやすくなります。

Logger.log(emailAddress); // メールアドレスをログに出力
Logger.log(name); // 名前をログに出力

エラー処理としては、try-catch文を使って例外をキャッチし、エラーメッセージをログに出力したり、処理を中断したりするなどの対策を講じることができます。

参考リンク

まとめ

GASを使うことで、スプレッドシートのデータを活用し、パーソナライズされたメールを一括送信することができます。この記事では、基本的な設定から、スクリプトの記述、メールテンプレートの作成、GASの実行、エラー処理までを解説しました。GASを使いこなして、メール業務の効率化を実現しましょう。