【GAS】GmailApp.sendEmailの使い方

GASgetBlob,getFileById,getLastRow,getRange,getSheetByName,getValues,GmailApp.sendEmail,push,SpreadsheetApp.getActiveSpreadsheet

この記事では、Google Apps Script(GAS)を使用してGmailを介してメールを送信する方法について、GmailApp.sendEmailメソッドの使用法に焦点を当てて使い方をご紹介します。

毎日何通も送るメールの自動化で業務効率化をしてみましょう。

GmailApp.sendEmailのサンプルコード

以下のサンプルは、基本的なメール送信のスクリプトです。送信者のGmailアカウントから、特定の宛先に対して件名と本文を指定してメールを送信します。

function sendBasicEmail() {
    // メールの宛先
    var recipient = "recipient@example.com";
    
    // メールの件名
    var subject = "GASを使用したメール送信のテスト";
    
    // メールの本文
    var body = "これはGoogle Apps Scriptを使用して送信されたテストメールです。";
    
    // メール送信の実行
    GmailApp.sendEmail(recipient, subject, body);
}

sendEmailメソッドの基本形

GmailApp.sendEmailメソッドは、Gmailを通じてメールを送信するための基本的なメソッドです。このメソッドは、最低限、宛先のメールアドレス、件名、メール本文を引数に取ります。

GmailApp.sendEmail(recipient, subject, body)
・recipient:送信先のメールアドレス
・subject(オプション):メールの件名
・body(オプション):メールの本文

メール送信のオプション

添付ファイルの送信

メールに添付ファイルを加えたい場合は、attachmentsオプションを使用します。以下の例では、Googleドライブからファイルを取得し添付しています。

function sendEmailWithAttachment() {
    var recipient = "recipient@example.com";
    var subject = "添付ファイル付きのメール";
    var body = "このメールには添付ファイルが含まれています。";
    
    // 添付ファイルの取得
    var file = DriveApp.getFileById('ファイルのID');
    var blob = file.getBlob();
    
    // メール送信の実行
    GmailApp.sendEmail(recipient, subject, body, {
        attachments: [blob]
    });
}

実用的なメール送信スクリプト例

より実践的な使用例を2つご紹介します。

①顧客別のメールを一括で送信する

特定の条件を満たすメールを一括で送信することが可能です。ここでは、顧客リストがスプレッドシートに保管されており、それぞれの顧客に対してカスタマイズされたメールを送信する例を考えてみます。

必要なスプレッドシートの準備

下記の列が含まれるスプレッドシートを用意します。

  • 顧客名
  • メールアドレス
  • メッセージ

サンプルコード

スプレッドシートに記載されている顧客情報を元にメールを一括送信するスクリプトです。

function sendCustomEmails() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('顧客リスト');
  var startRow = 2; // ヘッダー行を考慮して、データの開始行を指定
  var numRows = sheet.getLastRow() - 1; // データ行数を計算
  var dataRange = sheet.getRange(startRow, 1, numRows, 3); // 名前、メールアドレス、メッセージが含まれる列を指定
  var data = dataRange.getValues();

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var name = row[0]; // 顧客の名前
    var emailAddress = row[1]; // 顧客のメールアドレス
    var message = row[2]; // カスタマイズされたメッセージ
    var subject = 'お客様への特別なお知らせ'; // メールの件名を設定

    // メール本文に顧客名を含めたカスタマイズされたメッセージを作成
    var emailBody = 'こんにちは、' + name + '様\n\n' + message + '\n\nよろしくお願いします。';

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

②プロジェクトの進捗をメールで送信する

スプレッドシートに記載されたプロジェクトの進捗状況をチェックし、完了したプロジェクトの情報をメールで報告します。定期的にこのスクリプトを実行することで、プロジェクト管理の自動化を図ることができます。

必要なスプレッドシートの準備

下記の列が含まれるスプレッドシートを用意します。

  • プロジェクト名
  • 責任者
  • 進捗状況

サンプルコード

スプレッドシートから完了したプロジェクトの情報を抽出し、指定されたメールアドレスにその情報を送信します。

function sendCompletedProjectsReport() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();

  var completedProjects = [];
  for (var i = 1; i < values.length; i++) {
    if (values[i][2] === "完了") { // 進捗状況が「完了」のプロジェクトを抽出
      completedProjects.push(values[i]);
    }
  }

  if (completedProjects.length > 0) {
    var messageBody = '以下のプロジェクトが完了しました:\n\n';
    for (var j = 0; j < completedProjects.length; j++) {
      messageBody += completedProjects[j].join(' / ') + '\n';
    }

    var subject = 'プロジェクト完了報告';
    var recipient = 'your_email@example.com'; // 宛先メールアドレスを設定
    GmailApp.sendEmail(recipient, subject, messageBody);
  }
}

まとめ

GmailApp.sendEmailメソッドを使用することで、GASを通じて効率的にメール送信を自動化することが可能です。この記事では、GmailApp.sendEmailの基本的な使い方から、実践で使える参考処理方法をご紹介しました。

GASのGmail関連の記事も参考にしてみてください。

この記事を書いた人

てつお
広告代理店出身、事業会社でWebマーケティングや開発の仕事をしている26歳です。プロフィール詳細はこちら
■Google広告認定資格|Google アナリティクス個人認定資格(GAIQ)|TOEIC920点