Gmailは便利な機能が豊富だが、さらに工夫することで使いやすくなることから、人気が高い。今回はちょっと上級編として、「Google App Script」を利用した自動化の技を紹介しよう。

以下、MakeTechEasierの記事「Gmail Automation: 5 Useful Google Scripts to Automate Your Gmail)」をもとに、具体的な技を見てみたい。

「Gogle Apps Script」は、Googleサービスでのタスクを自動化するためのJavaScriptベースのスクリプト言語。言語と聞いて不安になる必要はない。必要なのはブラウザのみで、リッチなAPIを用いて簡単にGoogleサービスの機能を拡張できる。

数日後にメールを自動削除する設定

最初に紹介されているのが、メールの自動削除だ。受信したメールの中には、すぐに削除せずに受信ボックスの中にためたままにしているという人も多いだろう。そこで、「Delete Me」というラベルを貼ったメールをチェックして、一定の日数が経過すると削除するという自動化を設定してみよう。

以下が、その手順となる。

まずは、Google Scriptのページに行き、ログオンしていない人はログオンをしよう。そして、中央に表示された枠の中の左にある「Blank Project(空のプロジェクト)」を選択する(図1)。

図1:「Blank Project」を選択する画面

クリックすると、上部3行に以下のような内容が入力されたページが表示される。

function myFunction() {

}

その部分に、以下のスクリプトをコピーして上からペスートしよう。


function auto_delete_mails() {  
  var label = GmailApp.getUserLabelByName("Delete Me");  
  if(label == null){
    GmailApp.createLabel('Delete Me');
  }
  else{
    var delayDays = 2 // Enter # of days before messages are moved to trash   
    var maxDate = new Date(); 
    maxDate.setDate(maxDate.getDate()-delayDays);    
    var threads = label.getThreads();  
    for (var i = 0; i < threads.length; i++) {  
      if (threads[i].getLastMessageDate()

7行目の「delayDays」に、自分が削除したい日数を入れて(上記のスクリプトでは2、つまり2日になっている)保存。保存は上にあるフロッピーアイコンを押せばよい。その後、時計マークのトリガーアイコンをクリックするか、メニューにある「Resources(リソース)」をクリックした後に、「Cuttent project’s triggers(現行のプロジェクトのトリガー)」をクリックする。

「No triggers set up. Click here to add one now」というメッセージが表示される(図2)ので、それをクリックして、「auto_delete_mails」を「save(保存)」しよう(図3)。承認が必要(Authorization Required)というメッセージが出てきたら、クリックして許可のプロセスに進む。

図2:「No triggers set up. Click here to add one now」というメッセージが表示される画面

図3:「auto_delete_mails」を「save」する画面

これで準備は完了だ。自動で先ほどのスクリプトを実行してくれるので、あとは自分が設定した日に自動消去したいメールにDelete Meといラベルを張っておけばよい。Delete Meがわかりにくい場合は、上記のスクリプトのコピー&ペースト時に変えればよさそうだ。

重要なメールを受信したらSMSに通知する設定

同じくGoogle Apps Scriptを利用して、Google CalendarのSMS機能を利用して重要なメールに対してSMSを送るように設定してみよう。

先ほどと同じ手順で、「Blank Project(空のプロジェクト)」に以下のスクリプトをコピー&ペーストする。


function Gmail_send_sms(){
  var label = GmailApp.getUserLabelByName("Send Text");  
  if(label == null){
    GmailApp.createLabel('Send Text');
  }
  else{
    var threads = label.getThreads();  
    var now = new Date().getTime();
    for (var i = 0; i < threads.length; i++) {  
      var message = threads[i].getMessages()[0];
      var from = message.getFrom();
      var subject = message.getSubject();
      CalendarApp.createEvent(subject, new Date(now+60000), new Date(now+60000), {location: from}).addSmsReminder(0);
    }
    label.removeFromThreads(threads);
  }
}

「save(保存)」して、トリガー設定へ。たとえば5分おきなら、イベントを「Minutes timer(分タイマー)」に変更し、「Every 5 minutes(5分ごと)」に。

Gmail側に戻り、「Sand Text」ラベルを作成して、重要なメールを設定しよう。これで5分おきに自動スキャンしてSend Textのラベルが貼られたメールがあれば、Google CalenderのSMS通知機能を使って知らせてくれる。Google Calender側で携帯電話などを登録するのをお忘れなく。

後で見るスヌーズを設定する

最後に、特定のメールが後でもう1度表示されるようにする"スヌーズ"設定を紹介しよう。Google Apps Scriptで「Blank Project(空のプロジェクト)」を選択し、以下のスクリプトをコピー&ペースト。


var MARK_UNREAD = false;
var ADD_UNSNOOZED_LABEL = false;

function getLabelName(i) {
  return "Snooze/Snooze " + i + " days";
}

function setup() {
  // Create the labels we’ll need for snoozing
  GmailApp.createLabel("Snooze");
  for (var i = 1; i <= 7; ++i) {
    GmailApp.createLabel(getLabelName(i));
  }
  if (ADD_UNSNOOZED_LABEL) {
    GmailApp.createLabel("Unsnoozed");
  }
}

function moveSnoozes() {
  var oldLabel, newLabel, page;
  for (var i = 1; i <= 7; ++i) {
    newLabel = oldLabel;
    oldLabel = GmailApp.getUserLabelByName(getLabelName(i));
    page = null;
    // Get threads in "pages" of 100 at a time
    while(!page || page.length == 100) {
      page = oldLabel.getThreads(0, 100);
      if (page.length > 0) {
        if (newLabel) {
          // Move the threads into "today’s" label
          newLabel.addToThreads(page);
        } else {
          // Unless it’s time to unsnooze it
          GmailApp.moveThreadsToInbox(page);
          if (MARK_UNREAD) {
            GmailApp.markThreadsUnread(page);
          }
          if (ADD_UNSNOOZED_LABEL) {
            GmailApp.getUserLabelByName("Unsnoozed")
              .addToThreads(page);
          }          
        }     
        // Move the threads out of "yesterday’s" label
        oldLabel.removeFromThreads(page);
      }  
    }
  }
}

上記の2つの設定と同様に名前を付けて保存し、メニューの「Run(実行)」をクリックして「Setup(設定)」を押す。そして、トリガーを設定しよう。Gmailにいくと、Snoozeというラベルができているはずだ。スヌーズしてほしいメールにラベルを張る。これで、メールが再度表示されるはずだ。