LINE はこの記事で使っている LINE Notify の機能を2025年3月末で廃止すると通達していますので注意してください。
GASを使って、自分のGmailに着信したメールをLINEに通知してみます。
LINE(スマホアプリ)の設定
まず LINE で通知を受けるのを誰にするのか決めてください。自分だけでいいのか、既存のグループに通知するのか? 今回は新しいグループを作成してそのグループメンバーに通知することにします。(自分だけで良いのなら直接Gmailを見れば済みますからね。)
LINEグループ名: “Gmailが着信しました”
LINEのホーム画面で “グループ” のメニューを辿ると “グループ作成” の機能がありますのでグループを作ってください。
グループのメンバーには、忘れずに LINE Notify を加えてください。
LINE Notify
LINEに通知するのは LINE Notify を使います。

画面右上の [ログイン] からログインします。ログインする時にLINEを使っているスマホで認証が必要です。スマホを手元に置いてログイン操作をしてください。
画面上部右側の [アカウント名▽] のプルダウンリストから [マイページ] に進むと下のようなリンクが表示されます。
余談
Mac ならターミナルで、WSLがインストールされたWindowsならWSLで(なぜかPowershellではうまくいきませんでした)次のコマンドを実行してみてください。XXXXXXXXXX のところは取得したトークンです。
1 |
curl -X POST -H "Authorization: Bearer XXXXXXXXXX" -F "message=ABC" https://notify-api.line.me/api/notify |
すると、設定を済ませたLINEグループに “ABC” というメッセージが届きます。これはつまり、LINE Notify を適切に叩いてやれば(GASでなくても)ちゃんと動作するということを意味します。
GASスクリプトの作成
Googleドライブにログインし、[+新規] から Google Apps Script に入ります。”無題のプロジェクト” になっているので、このタイトル部分をクリックして適当な名前に変更しておきます。
スクリプトは次のようになります。これをコピペしてください。ただし、冒頭の XXXXXXXX の部分は LINE Notify のトークンを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
const LINE_NOTIFY_TOKEN = "XXXXXXXX"; const query = "from:xxx.ac.jp"; //queryにはメールの条件を記述する //今回の場合はfromに「xxx.ac.jp」が含まれるメールについて通知されるように設定 //メールをチェックし条件に該当するメールをLINEに通知する function getMail(){ //指定した条件でスレッドを検索して取得 let myThreads = GmailApp.search(query, 0, 10); //スレッドからメールを取得し二次元配列に格納 let myMessages = GmailApp.getMessagesForThreads(myThreads); for(let i in myMessages){ for(let j in myMessages[i]){ //スターがないメッセージのみ処理 if(!myMessages[i][j].isStarred()){ let strDate = myMessages[i][j].getDate(); let strmsg = Utilities.formatDate(myMessages[i][j].getDate(), 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss')+"\n"; //タイムスタンプ strmsg += myMessages[i][j].getSubject() + "\n";//Subject strmsg += myMessages[i][j].getPlainBody().slice(0,200);//本文の先頭から200文字 //LINEにメッセージを送信 sendLineMessage(strmsg); //処理済みのメッセージをスターをつける myMessages[i][j].star(); } } } } //LINEにメッセージを送信する function sendLineMessage(msg) { let response = UrlFetchApp.fetch("https://notify-api.line.me/api/notify", { "method": "post", "headers": { "Authorization": "Bearer " + LINE_NOTIFY_TOKEN }, "payload": { "message": msg } }); } |
少しスクリプトを解説します。ここ を参考にしていますが、誰が書いても同じようなコードになるので感謝の意を表しつつ使わせていただきました。
Gmail に届いたすべてのメールについて通知が欲しい訳ではないので、条件を付けています。var query = “from:xxx.ac.jp”; の部分がそれで、送信者に xxx.ac.jp が含まれるメールだけを対象にしています。特定の送信者だけに絞りたいなら、そのメールアドレスをここに書けばOKです。
LINE への通知が完了したかどうか判別するために、Gmail の星(☆)マークを使っています。着信した時のメールには星マークは付いていませんので、LINEに通知し、通知が終わったら星マークを付けています。こうすることで重複して LINE に通知されないように制御しています。
スクリプトが完成したら [getMail] をクリックして選択、保存して、[▷実行] を押します。
このとき “承認が必要です” のメッセージが出たら承認してください。承認する手順は 別の記事 に書いたのと同じです。
トリガーの設定
スクリプトができたので、[▷実行] を押せば動くはずです。その時点でGmailに対象のメールがあればLINEに通知されます。しかし期待する動作は、Gmailにメールが届いたら自動でLINEに通知が来ることです。そのためにトリガーを設定します。
GASの画面の左端の時計のアイコンをクリックするとトリガーの設定画面になります。[+トリガーを追加] を押します。
トリガーが発生する条件を設定します。今回の用途なら何分かごとにGmailの着信がチェックされるのが適当でしょう。5分ごとにトリガーが発生するように設定して [保存] ボタンを押します。
独り言: 同じ Google サービス内部なんだから Gmail の着信というトリガーが設定できても良いんじゃないかとは思う。数分の遅れが必ず発生してしまうのはイマイチですね。
動作確認
自分の Gmail 宛に xxx.ac.jp からメールを送ります。
スマホに通知が届きます。このスマホには LINE の他に Outlook、Gmail もインストールされているのでそれぞれの通知も届いています。
もちろん LINE にも届いています。