【Googleスプレッドシート】Apps Scriptでメールを自動送信!MailAppとGmailAppの違い

【Googleスプレッドシート】Apps Scriptでメールを自動送信!MailAppとGmailAppの違い
🛡️ 超解決

Googleスプレッドシートのデータを基に、毎日の報告メールを自動送信できたら便利ですよね。Apps Scriptを使えば定型メールを一括送信できますが、その際に使うのがMailAppとGmailAppの2つのサービスです。どちらを選べばよいか迷う方も多いのではないでしょうか。この記事では両サービスの違いを明確にし、それぞれの具体的な使い方を解説します。これを読めば、目的に応じて最適なサービスを選択できるようになります。

【要点】MailAppとGmailAppの違いと使い分け

  • MailApp.sendEmail: シンプルなテキストメールを送信する機能です。添付ファイルやHTML装飾はできませんが、実行が速く権限が少なくて済みます。
  • GmailApp.sendEmail: Gmailの機能を活用し、HTMLメールや添付ファイル、オプション指定が可能です。差出人エイリアスやスレッドへの返信もサポートします。
  • GmailApp.createDraft: 下書きを作成するだけの機能です。送信せずに内容を確認したい場合に便利です。

ADVERTISEMENT

MailAppとGmailAppの概要と仕組み

Apps Scriptにはメール送信用の組み込みサービスが2つあります。MailAppはシンプルなメール送信に特化した軽量サービスです。GmailAppはGmail APIをラップしたサービスで、Gmailの豊富な機能を利用できます。主な違いは以下の通りです。MailAppはテキストのみのメールを送信します。GmailAppはHTMLメールや添付ファイル、カスタム差出人を指定できます。また、GmailAppはGmailのラベルやスレッド操作も可能ですが、メール送信だけならMailAppで十分なケースも多いです。

両者の選択基準は次の通りです。単なるテキスト通知メールならMailAppで十分です。リッチなHTMLメールや添付ファイルが必要ならGmailAppを選びます。また、GmailAppを使う場合、スプレッドシートのスクリプトはGmailアカウントの権限を要求します。MailAppはメール送信のみの権限で済むため、セキュリティを重視する場合に適しています。

MailAppを使ったメール送信の手順

MailAppは最も簡単なメール送信方法です。以下の手順でスクリプトを作成します。

  1. スプレッドシートを開き、拡張機能からApps Scriptを起動する
    スプレッドシートを開き、メニュー「拡張機能」→「Apps Script」をクリックします。新しいタブにスクリプトエディタが開きます。
  2. スクリプトを記述する
    エディタに以下のコードを入力します。
    function sendMailWithMailApp() {
    var recipient = "example@example.com";
    var subject = "テストメール";
    var body = "これはMailAppで送信したメールです。";
    MailApp.sendEmail(recipient, subject, body);
    }
  3. 関数を実行して権限を承認する
    ツールバーの実行ボタン(▶)をクリックし、初回は権限承認画面が表示されます。承認するとメールが送信されます。

MailApp.sendEmailの基本構文はMailApp.sendEmail(recipient, subject, body)です。第3引数に本文を指定します。オプションでoptionsオブジェクトを使ってcc、bcc、replyToを指定することもできます。ただし添付ファイルは使えません。

GmailAppを使ったメール送信の手順

GmailAppを使うと、より高度なメール送信が可能です。以下に基本的な使い方を示します。

  1. スクリプトエディタを開く
    MailAppの場合と同様に、スプレッドシートの「拡張機能」→「Apps Script」を開きます。
  2. HTMLメールを送信するコードを記述する
    以下のコードを入力します。本文にHTMLタグを使えます。
    function sendHtmlMail() {
    var recipient = "example@example.com";
    var subject = "HTMLメールのテスト";
    var htmlBody = "<h1>こんにちは</h1><p>これはHTMLメールです</p>";
    GmailApp.sendEmail(recipient, subject, "", {htmlBody: htmlBody});
    }

    第3引数(プレーンテキスト本文)は空文字でも構いませんが、念のためプレーンテキストの代替を入れることをおすすめします。
  3. 添付ファイル付きメールを送信する
    スプレッドシートのデータを添付する例:
    function sendAttachment() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var blob = sheet.getRange("A1:D10").getBlob();
    var recipient = "example@example.com";
    var subject = "データ添付";
    var body = "スプレッドシートの範囲を添付します。";
    GmailApp.sendEmail(recipient, subject, body, {attachments: [blob]});
    }

GmailApp.sendEmailの構文はGmailApp.sendEmail(recipient, subject, plainBody, options)です。optionsオブジェクトでhtmlBody、attachments、cc、bcc、replyTo、from(エイリアス)などを指定できます。GmailAppはGmailのリソースを使うため、1日あたりの送信制限が異なります(後述)。

ADVERTISEMENT

使い分けの注意点と制限事項

1日の送信制限が異なる

MailAppは1日あたり100通まで送信できます。GmailAppはコンシューマーアカウントで1日500通、Workspaceアカウントでは1日1500通まで送信可能です。大量送信が必要な場合はGmailAppが適しています。制限に達した場合はエラーが発生し、翌日まで送信できません。

GmailAppを使うときの権限が広くなる

MailAppは「メールの送信」権限のみ要求します。一方GmailAppは「メールの送信、閲覧、管理」権限を要求します。そのため、GmailAppを使うスクリプトはGmailのラベル操作やスレッド読み取りも可能になります。セキュリティに敏感な環境ではMailAppを選ぶと良いでしょう。

GmailAppでエイリアス(別名)から送信する

Gmailの設定でエイリアスを追加している場合、optionsオブジェクトのfromにエイリアスのメールアドレスを指定できます。事前にGmailでエイリアスを承認しておく必要があります。

MailAppとGmailAppの比較表

機能 MailApp GmailApp
テキストメール 可能 可能
HTMLメール 不可 可能(htmlBodyオプション)
添付ファイル 不可 可能(attachmentsオプション)
cc/bcc/replyTo 可能(optionsオブジェクト) 可能
差出人エイリアス 不可 可能(fromオプション)
スレッドへの返信 不可 可能(threadId指定)
下書き作成 不可 可能(createDraft)
1日の送信制限 100通 500通(コンシューマー)、1500通(Workspace)
要求する権限 メールの送信のみ メールの送信・閲覧・管理

まとめ

この記事ではApps ScriptのMailAppとGmailAppの違いを解説しました。MailAppはシンプルなテキストメールの送信に特化しており、権限が少なく手軽です。GmailAppはHTMLメールや添付ファイル、エイリアスなど高度な機能を提供します。用途に応じて適切なサービスを選んでください。次はGmailAppを使ってスプレッドシートのデータを定期的に送信するトリガー設定を試すと良いでしょう。また、GmailAppのcreateDraftで下書きを作成し、手動送信するワークフローも便利です。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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