概要
メールが煩雑化し、大事なメールが埋もれてしまうことがあり、日常的に頻繁に利用するLINEであれば見逃すことはないのでは?と思い実装してみました。
非常に多く参考となる記事があったため、それを参考にしながら自分なりにまとめてみました。
使用するツール
・LINE(通知を受け取るグループをあらかじめ作成しておくと◎)
・LINE Notify:LINEのトーク画面に自動で通知を飛ばすことができるサービス
・GAS(Google Apps Script):JavaScriptがベースとなるGoogleが提供するプログラミング言語
手順
(1)Google Chromeを開き、画面左上の「アプリ」から「Googleドライブ」を選択する
(2)ドライブ画面の左上にある「+新規」をクリックし、下記の手順でGoogle Apps Scriptを選択する
(3)デフォルトでプロジェクト名が「無名のプロジェクト」となっているので、任意のプロジェクト名に修正する
(4)下記のコードをコピペする(コピペ後この画面は開きっぱなしで!)
・1行目にはこの後に取得するトークンを貼り付ける
・2行目のqueryには今回LINEに通知を送るときの条件を記述する
例)fromの@以下が「@gmail.com」のメールを通知する
⇒”from:@gmail.com”
例)件名(subject)が「お知らせ」のメールを通知する
⇒”subject:お知らせ”
var LINE_NOTIFY_TOKEN = "取得したトークンを記載";
var query = "from:gmail.com";
//queryには条件を記述
//今回の場合はfromが「@gmail.com」のメールが届くように設定されている
//メールをチェックし条件に該当するメールをLINEに通知する
function getMail(){
//指定した条件でスレッドを検索して取得
var myThreads = GmailApp.search(query, 0, 10);
//スレッドからメールを取得し二次元配列に格納
var myMessages = GmailApp.getMessagesForThreads(myThreads);
for(var i in myMessages){
for(var j in myMessages[i]){
//スターがないメッセージのみ処理
if(!myMessages[i][j].isStarred()){
var strDate = myMessages[i][j].getDate();
var 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) {
var response = UrlFetchApp.fetch("https://notify-api.line.me/api/notify", {
"method": "post",
"headers": {
"Authorization": "Bearer " + LINE_NOTIFY_TOKEN
},
"payload": {
"message": msg
}
});
}
(5)新規タブでhttps://notify-bot.line.me/ja/を開く
(6)右上の「ログイン」から自分のLINEアカウントにログインする
(7)ログイン後、アカウント名に切り替わるので右上のアカウント名をクリックし「マイページ」を開く
(8)ページ下部の「アクセストークンの発行(開発者向け)」からトークンを発行する(ここで発行したトークンを先ほどのコードの1行目に追加する)
・トークン名は任意の名前でOK
・あらかじめ通知を受け取るグループを作成している場合、そのグループを選択する(1:1でLINE Notifyから通知を受け取るでもOK!)
(9)LINEグループにLINE Notifyを招待し、追加する
(10)トークンが取得されたか確認する
・「アクセストークンの発行(開発者向け)」の下にあるLINE Nortify API Documentの中に動作確認用のコマンドがある。Macの場合は、下記をターミナルに入力すると確認できる。
curl -X POST -H "Authorization: Bearer 発行したアクセストークン" -F "message=ABC" [https://notify-api.line.me/api/notify](https://notify-api.line.me/api/notify)
・成功した場合、設定したLINEグループに「ABC」というメッセージが届く
(11)GASに戻り、実行ログの左隣にあるプルダウンから「getMail」を選択し、実行の左隣にある保存ボタン(またはcommand + S)にて保存する
(12)最後に「▷実行」を押して完了
まとめ
今回の実装で初めてLINEのAPIを使ってみました。他にも便利な機能がたくさんあるようなので、今後自分でアプリケーションを作成する際に積極的に使用していきたいなと思います。
最後までご覧いただきありがとうございました。
参考
https://technical.verybestcbp.com/gmailtoline/
https://qiita.com/chibi929/items/6e56ade1b65d1eef1051
https://qiita.com/chivi_dump/items/a62a7b8c32e6ea894a09