Gmailで簡単!メール送信

Googleのサービスの中でも、もっとも広く使われていてかつ重要な役割を果たすのが「Gmail」でしょう。既にメールはGmailしか使ってない、という人も多いはずです。

Google Apps Script(以後、GAS)では、Gmailをさまざまに操作できます。今回はもっとも基本となる「メールの送信」を行ってみましょう。まずは、ごく単純なサンプルから作ってみます。

では、GASのプロジェクトを用意して下さい。前回、サンプルとして作成したプロジェクトをそのまま利用してもいいでしょう。スクリプトエディタでプロジェクトを開いたら、myFunction関数の下に、以下の関数を追記して下さい。


function sendmail() {
  var address = '…あなたのメールアドレス…'; // 送信先
  var subject = 'Hello!'; // タイトル
  var message = 'This is sample message.'; // メッセージ
  MailApp.sendEmail(address, subject, message);
}

'…あなたのメールアドレス…' の部分には、自分のメールアドレスを指定しておきます。記述ができたらファイルを保存し、スクリプトを実行してみましょう。

実行とアクセス許可

ツールバーの「関数を選択」(虫のアイコンの右側、「myFunction」と表示されているもの)をクリックすると、用意されている関数がプルダウンします。ここから、「sendmail」を選びましょう。そして「実行」アイコン(虫のアイコンの左側にある▼アイコン)をクリックします。これで、選択したsendmail関数が実行されます。

が! 前回のサンプルと違い、すぐには実行されません。画面には「承認が必要です」というアラートが表示されるはずです。

  • 実行するとこのようなアラートが表示される。

これは、スクリプトが外部のサービスにアクセスすることを許可してもらうためのアラートです。今回はメール送信の機能を利用していますが、このように外部にあるGoogleの機能を利用しようとすると、「こういうアクセスをしようとしているけどいいですか?」とユーザーに確認するようになっているのです。

ここでは「許可を確認」ボタンをクリックして下さい。画面にウインドウが現れ、Googleアカウントを尋ねてくるので、使用するアカウントを選択して下さい。なお、G Suiteを利用している場合は、同じドメインのアカウントしか選択できないので注意しましょう。

  • アカウントを尋ねてくるので選択する

アカウントを選択すると、アクセスの内容が表示されます。内容を確認して「許可」ボタンをクリックして下さい。これでアクセスが許可され、スクリプトが実行されます。ちょっと面倒ですが、このアクセス許可の作業は、一度行えば、次からは現れないのでご安心を。

  • アクセスの内容を確認して許可する。

実行すると、自分のメールアドレスにメールが送られてきます。確認しましょう。

MailApp.sendEmailについて

今回、利用したのは、MailAppというサービスの「sendEmail」というメソッドです。MailAppは、メール送信に関するオブジェクトで、sendEmailがGmailでメールを送信するものです。これは以下のように実行します。

MailApp.sendEmail( 送信先, タイトル, メッセージ );

送信先にメールの送り先となるメールアドレスを、タイトルとメッセージにテキストをそれぞれ設定して実行すれば、指定のアドレスにメールが送られます。非常に簡単ですね!

未読メールをレポートする

メールの送信が使えると、さまざまな情報をまとめてメールで送れるようになります。利用例として、未読のメール数を調べてメールで送るスクリプトを作ってみましょう。以下のリストをスクリプトエディタで追記して下さい。


function sendUnreadReport() {
  var unread =   GmailApp.getInboxUnreadCount();
  var priority = GmailApp.getPriorityInboxUnreadCount();
  var starred =  GmailApp.getStarredUnreadCount();
  var spam =     GmailApp.getSpamUnreadCount();

  var address = '…あなたのメールアドレス…'; // 送信先
  var subject = 'Unread Report'; // タイトル
  var message = '※未読メッセージのレポート\n\n'
    + '受信トレイ:' + unread + '\n'
    + '重要:   ' + priority + '\n'
    + 'スター:  ' + starred + '\n'
    + 'スパム:  ' + spam;
  MailApp.sendEmail(address, subject, message);
}

これは、受信トレイ、重要メール、スターメール、スパムといったものについて、未読のメール数を調べて送信するサンプルです。記述したら、ツールバーの「関数を選択」で「sendUnreadReport」を選び、実行してみましょう。

実行すると、またアクセスの許可を求める表示が現れます。「最初に一度だけっていったのに……」なんていわないで! 今回は、前回許可したのとは別の機能のアクセス権が必要なのです。前回と同様、アクセスを許可すればスクリプトが実行されます。

  • 新たなアクセス権を求めてくるので許可する。

未読メール数を調べる

今回は、GmailAppというオブジェクトを使っています。これは、Gmailアプリの機能をまとめたオブジェクトです。ここでは、未読数に関する以下のような機能を利用しています。

受信メールの未読数を返す
var unread = GmailApp.getInboxUnreadCount();
重要メールの未読数を返す
var priority = GmailApp.getPriorityInboxUnreadCount();
スター付きメールの未読数を返す
var starred = GmailApp.getStarredUnreadCount();
スパムメールの未読数を返す
var spam = GmailApp.getSpamUnreadCount();

これらの値をメッセージにまとめてMailApp.sendEmailで送信していた、というわけです。

毎朝レポートを送らせよう

このスクリプト、実行するためにはそのアカウントでスクリプトを実行しないといけません。だったらGmailを開いて未読をチェックしたほうが便利ですよね。そこで、毎日、決まった時間にスクリプトを自動実行するように設定しましょう。

スクリプトエディタの「編集」メニューから「現在のプロジェクトのトリガー」を選んで下さい。画面にダイアログが現れます。これは「トリガー」というものを設定するためのダイアログです。トリガーというのは、決まったルールでスクリプトを実行するための仕組みのことです。

では、「トリガーが設定されていません……」というメッセージ部分をクリックしましょう。これで新しいトリガーが追加されます。そこにある項目を以下のように設定して下さい。

実行:「sendUnreadReport」を選択 イベント:「時間主導型」「日タイマー」「午前7時~8時」を選択

  • トリガーの設定を行う。

これで「保存」ボタンを押せば、トリガーが保存されます。これで、毎日午前7~8時の間に、自動的にsendUnreadReport関数が実行され、Gmailの未読数が指定のメールアドレスに送られるようになります。

Googleアカウントを複数持っている場合、普段はあまり使わないアカウントにメールが届いていても気づかないことがあります。それぞれのアカウントごとにこのスクリプトを用意しトリガー設定しておけば、毎日、どのアカウントにどれだけ未読メールがあるかチェックできます。なかなか便利でしょう?