こんな人にオススメ

  • 特定のクライアントからのビジネスメールはプライペートな時間でも見逃したくない
  • サーバーダウンなどの重要なアラートのメールを見逃したくない

仕組みの概要

指定したラベルをつけるメールを受信した際、「Google Apps Script」と「LINE Notify」を利用してLINEにメッセージを送信します。
すべての未読新着メールを通知するのではなく、Gmail側のルールでラベルがついたメールにのみ動作するところがポイントです。
GoogleAppsScriptでのプログラミングが必要ですが、コピペして使えるプログラムも紹介します。

LINE Notifyの利用準備

まずは「LINE Notify」を利用できるようにします。

LINE Notifyとは

LINE Notify(ラインノーティファイ)とは、GitやIFTTTといった様々なWebアプリケーションと連携して、通知をLINEで受け取れるようになるサービスです。サービス提供元はLINE株式会社。LINEの公式サービスで、LINE利用者ならだれでも利用可能です。

利用手順1. LINE NotifyのWebサイトにアクセス


LINE NotifyのWebサイトはこちら

利用手順2. 通知を受け取りたいLINEアカウントでログイン

ページ右上の「ログイン」から、LINEアカウントでログインします。

LINEアカウントはスマホのLINEアプリから、メールアドレスとパスワードを登録して作成します。

利用手順3. マイページからトークンを発行する


ログインに成功したら、マイページに移動。


「トークンを発行する」を選択してください。


「トークン名を記入してください」には自分でわかりやすい名前を入力してください。
「通知を送信するトークルームを選択してください」では、「1:1でLINE Notifyから通知を受け取る」を選択して、「発行する」をクリック。

発行されたトークンはコピーしてメモ帳などにペーストするなり忘れないようにしてください。

これで「LINE Notify」の利用準備完了です。

使用するプログラム

以下の記事で紹介されているプログラムを自分なりにカスタマイズしています。あわせてお読みください。
[Gmail to LINE]GASで新着メールをLINEに転送する – Qiita

var lineToken = "hogehogehogehoge"; //LINE Notifyのトークン

function send_line(Me) {
    var payload = { 'message': Me };
    var options = {
        "method": "post",
        "payload": payload,
        "headers": { "Authorization": "Bearer " + lineToken }
    };
    UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

function fetchContactMail() {

    var ISREAD_LABEL = GmailApp.getUserLabelByName('通知済み');
    var strTerms = ('label:通知対象 -label:通知済み');

    var myThreads = GmailApp.search(strTerms);
    var myMsgs = GmailApp.getMessagesForThreads(myThreads);

    var valMsgs = [];
    for (var i = 0; i < myMsgs.length; i++) {
        valMsgs[i] = "\n■" + myMsgs[i].slice(-1)[0].getSubject()
            + "\n" + myMsgs[i].slice(-1)[0].getPlainBody().slice(0, 100)
            + "\n" + myMsgs[i].slice(-1)[0].getFrom();
    }

    myThreads.forEach(function (t) {
        t.addLabel(ISREAD_LABEL);
    });

    return valMsgs;
}

function main() {
    new_Me = fetchContactMail()
    if (new_Me.length > 0) {
        for (var i = new_Me.length - 1; i >= 0; i--) {
            send_line(new_Me[i])
        }
    }
}

プログラムの解説

1行目のダブルコーテーションの中hogehogehogehogeの部分を削除し、自分で発行したトークンをコピペしてください。
3行目から11行目までは、LINE NotifyでLINEにメッセージ投稿するためのプログラムです。
13行目から33行目まで、通知する対象のメールを選択して、実際に通知するメッセージを生成しています。
15行目の「通知済み」は、通知を完了したメールにつけるラベル名です。
16行目が通知対象のメールをラベルのありなしで判別しています。
「通知対象」ラベルがついているメールから、「通知済み」ラベルがついているメールを除いたメールをLINEに通知する。
21行目から26行目がLINEに通知するテキストの整形です。
改行コードと■のあとにメールのタイトル、改行して2行目にメールの本文の冒頭、改行して3行目に送信者名となるようにしています。
最後の35行目からがメイン部分。ラインへの通知を通知対象メールの配列で実行していきます。

GAS(GoogleAppsScript)の設定

  1. GoogleAppsScriptにアクセスして、Gmailと同じアカウントでログイン。
  2. 新しいプロジェクトを作成する
  3. 前述のプログラムをコピペしてsaveプロジェクトを保存
  4. 新しいトリガーを追加
  5. 実行する関数を選択→「main」
    実行するデプロイを選択→「Head」
    イベントのソースを選択→「時間主導型」
    時間ベースのトリガーのタイプを選択→「分ベースのタイマー」
    時間の間隔を選択(分)→「1分おき」
    エラー通知設定→「毎日通知を受け取る」
    と設定して保存

仕上げ

最後にGmailの「メールの自動振り分け」設定で、LINEに通知したいメールに対して「通知対象」ラベルをつけるルールを作成します。
これで1分おきに、GASが実行されて、通知対象ラベルが付いていて、通知済みラベルがついていないメールがあった場合に通知済みラベルを追加。
その後にLINEに通知を送信します。
「通知対象」ラベルをつけるルール次第で柔軟に通知するメールを選ぶことができます。
Gmailの通知ではなくLINEでの通知にすることで、死活監視のアラートメールのようなプライベートタイムでも無視できない大切なメールの着信に気がつくことができるようになります。