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は最も簡単なメール送信方法です。以下の手順でスクリプトを作成します。
- スプレッドシートを開き、拡張機能からApps Scriptを起動する
スプレッドシートを開き、メニュー「拡張機能」→「Apps Script」をクリックします。新しいタブにスクリプトエディタが開きます。 - スクリプトを記述する
エディタに以下のコードを入力します。function sendMailWithMailApp() {
var recipient = "example@example.com";
var subject = "テストメール";
var body = "これはMailAppで送信したメールです。";
MailApp.sendEmail(recipient, subject, body);
} - 関数を実行して権限を承認する
ツールバーの実行ボタン(▶)をクリックし、初回は権限承認画面が表示されます。承認するとメールが送信されます。
MailApp.sendEmailの基本構文はMailApp.sendEmail(recipient, subject, body)です。第3引数に本文を指定します。オプションでoptionsオブジェクトを使ってcc、bcc、replyToを指定することもできます。ただし添付ファイルは使えません。
GmailAppを使ったメール送信の手順
GmailAppを使うと、より高度なメール送信が可能です。以下に基本的な使い方を示します。
- スクリプトエディタを開く
MailAppの場合と同様に、スプレッドシートの「拡張機能」→「Apps Script」を開きます。 - 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引数(プレーンテキスト本文)は空文字でも構いませんが、念のためプレーンテキストの代替を入れることをおすすめします。 - 添付ファイル付きメールを送信する
スプレッドシートのデータを添付する例: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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
