概要

特定のメールが来た時にだけ通知したいときありませんか?
Google Apps Script を使えば条件を指定した特定のメールのみ通知させることが可能です!
今回は特定のGmailが来た時にLINE通知する方法をご紹介します!
※Gmail限定の方法となります。
事前準備、設定の流れ
- LINE Notifyにログイン、トークンキーを発行
- 本ページの好きなサンプルスクリプトをコピー
- Google Apps Script を開いてスクリプトとトークンキーを貼り付け
- スクリプトを保存して[権限の許可]
- トリガー設定で自動実行!
一度設定してしまえばあとは自動でやってくれますよ!
LINE Notifyの登録方法はこちらの記事をご参照ください↓
注意点
・Gmailの検索条件によっては大量にLINEが届く可能性がありますのであらかじめ
Gmailの未読メールをなくしておくことをお勧めします。(※すべてチェック→既読にする 等)
・本ページのスクリプトは自己責任にてご使用ください。
・一度LINE通知したメールはスクリプトが既読にします。
・もう一度メールを未読にするとまたLINE通知させることができます。
サンプルスクリプト1:メールが来たことを通知する
一番シンプルなスクリプトです。
指定した条件に一致したメールが来たら”メールが届きました“とLINE通知します。
xxxxxx の部分には自分自身で発行したLINEトークンを貼り付けてください。
function myFunction() {
// 条件:未読 かつ 件名に”adsense”を含む かつ 2022年3月1日以降のメール
var threads = GmailApp.search('is:unread subject:adsense after:2022/3/01');
var line = 'メールが届きました';
threads.forEach(function(thread){
sendline(line);
thread.markRead();
})
}
function sendline(line){
//Line Notifyで発行したトークン
var linetoken = "xxxxxxxxxxxxxxxxxxxxxxxx"
var options =
{
"method" : "post",
"payload" : "message=" + line,
"headers" : {"Authorization" : "Bearer "+ linetoken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}
赤マーカーの部分はメールの検索条件になります。自由に変更可能です。
スクリプトを実行すると以下のようにLINE通知されます。

条件の変更方法は以下の記事を参考にしてください。
サンプルスクリプト2:メールの件名を通知する
さきほどのスクリプトとの違いはメールの件名をLINEメッセージとして通知する点です。
そこまでの内容の変化はありません。
xxxxxx の部分には自分自身で発行したLINEトークンを貼り付けてください。
function myFunction() {
// 条件:未読 かつ 件名に”adsense”を含む かつ 2022年3月1日以降のメール
var threads = GmailApp.search('is:unread subject:adsense after:2022/3/01');
var subject = '';
threads.forEach(function(thread){
var messages = thread.getMessages();
messages.forEach(function(message){
subject = message.getSubject();
Logger.log(subject);
})
sendline(subject);
thread.markRead();
})
}
function sendline(line){
//Line Notifyで発行したトークン
var linetoken = "xxxxxxxxxxxxxxxxxxxxxxxx"
var options =
{
"method" : "post",
"payload" : "message=" + line,
"headers" : {"Authorization" : "Bearer "+ linetoken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}
Logger.log(subject) の部分はデバッグ用(内容確認用)のため無くても大丈夫です。
スクリプトを実行すると以下のようにメールの件名のみが表示されます。

↑は私がGoogle Adsenseの落ちた時のメールの件名です(笑)
サンプルスクリプト3:メールの本文(内容)を通知する
指定した条件に一致するメールの本文をLINEのメッセージとして送ります。
xxxxxx の部分には自分自身で発行したLINEトークンを貼り付けてください。
function myFunction() {
// 条件:未読 かつ 件名に”adsense”を含む かつ 2022年3月1日以降のメール
var threads = GmailApp.search('is:unread subject:adsense after:2022/3/01');
var plainBody = '';
threads.forEach(function(thread){
var messages = thread.getMessages();
messages.forEach(function(message){
plainBody = message.getPlainBody();
Logger.log(plainBody);
})
sendline(plainBody);
thread.markRead();
})
}
function sendline(line){
//Line Notifyで発行したトークン
var linetoken = "xxxxxxxxxxxxxxxxxxxxxxxx"
var options =
{
"method" : "post",
"payload" : "message=" + line,
"headers" : {"Authorization" : "Bearer "+ linetoken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}
サンプルスクリプト4:メールのリンクを通知する
届いたメールのURLリンクをLINE通知します。
そのままURLリンクを送信すると”&“が途切れてしまったので途中、& → %26に変換しています。
xxxxxx の部分には自分自身で発行したLINEトークンを貼り付けてください。
function myFunction() {
var threads = GmailApp.search('is:unread subject:adsense after:2022/3/01');
threads.forEach(function(thread){
var link = thread.getPermalink()
link = link.replace(/&/g,'%26');
sendline(link)
thread.markRead();
})
}
function sendline(line){
//Line Notifyで発行したトークン
var linetoken = "xxxxxxxxxxxxxxxxxxxxxxxx"
var options =
{
"method" : "post",
"payload" : "message=" + line,
"headers" : {"Authorization" : "Bearer "+ linetoken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}
実際に実行してみると↓のような感じで届きます。少しわかりづらいかもしれませんね。

URLにアクセスしてみるとGmailの内容が表示されます。

スクリプトを実行する
Google Driveを開きます。※Googleのトップページからのアクセスが一番わかりやすいかも

[+新規]→[その他]→[Google Apps Script]をクリックします。

スクリプトの入力画面が表示されます。
もともと入力されているものはすべて上書きしてかまいません。

スクリプトを貼り付けた後は画面上部のフロッピーマークをクリックして保存します。

保存ができたら次はフロッピーマーク右の [▶実行]ボタンをクリックします。
初回実行時は必ず “承認が必要です” と表示されるため[権限を確認]をクリックします。

自分が普段使用しているアカウントをクリックします。

[詳細]をクリックしてメニューを展開し、一番下のリンクをクリックします。
※念のため、デベロッパーのGmailアカウントが自分のものであることを確認してください。

[許可]をクリックします。

エラーが表示されていなければ問題なく稼働しています。
Gmailの条件に当てはまるメールがあればLINEが届いているかと思います。
LINEが届かない場合はGmailの検索条件を変えてみてください。
※サンプルスクリプトそのままだとadsenseのメールを探しますが、adsenseに申し込んだことがない人はそもそもメールがないはずなので。

トリガー設定して自動実行させる
LINE通知はうまくいきましたでしょうか。
今の状態では、手動で実行ボタンを押さないとLINE通知してくれません。
そこで、トリガー機能を使って処理を自動化させます。
先ほどスクリプトを実行した画面、左端の[トリガー]をクリックします。

画面右下の[+ トリガーを追加]をクリックします。

トリガーの項目を設定していきます。
今回は、[時間主導型]、[分ベースのタイマー]、[5分おき]の設定にしています。
※1分おきに設定すると1日の実行上限数を超えてしまう可能性があります。
設定が終わったら画面右下の[保存]をクリック。

以下のようにトリガーが作成されました。
検索対象のメールを手動で未読にしてみてトリガーを試してみてもいいかもしれません。

さいごに
Google Apps ScriptはGoogle関連のサービスだけでなくLINE通知もできちゃいました。
応用をきかせるともっと幅広く活用できそうですね。
今回は少し長く見づらくなってしまったかもしれません。反省TT
すっきりしてわかりやすい内容をかけるように精進します!
ではまた
コメント