【Google Apps Script 】特定のGmailが来たら自分宛てにLINEを送る【手順通りで誰でもできます】

概要

特定のメールが来た時にだけ通知したいときありませんか?

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

すっきりしてわかりやすい内容をかけるように精進します!

ではまた

コメント

タイトルとURLをコピーしました