見出し画像

GメールをLINEに転送する 全件転送

バイクシェアサービスAirRideをやってます。
利用してくれた皆様に感謝です。

先日、予約が入っていたにもかかわらず
利用希望日までに予約通知メールを認識できず
結果、キャンセルになってしまうケースが発生

個人的にメール離れしてしまっており、
確認頻度が減っていました。申し訳ないです。。

なにか、対策せねば!

昨今のコミュニケーションはもっぱらLINE

な、の、で、

対策として、登録しているメールアカウントへの通知メールを確認頻度の高いLINEへ転送するようにしてみる。

転送対象は、僕のメールアカウントに届く下記のドメインのメール全てにしてます。

対象:@airride-bike.com

こんな方はぜひ。
Gメールに届く重要メールが埋もれてしまうので、LINEに転送したい

重要なメールは人によって様々だと思うけど、
僕の家族内では重要メールは下記でした。
(全部、妻とのトークグループ作って、LINEに転送するようにしときました。)
・バイクシェアサービス「AirRide」の予約通知メール
・長男の幼稚園からの連絡メール
・習い事(塾や、スイミング)からの入館、退館通知

GMailからLINEへ転送する

GMailからLINEへ転送するやり方です。
Google Apps Script」を使ってみます。

コードを書く必要があるけど、コピペして1行変えるだけでお手軽です。

準備その1 LINEとの接続キーをもらう

まず、LINE Notifyを使うためのキー(アクセストークン)をゲットします。

◆"LINE Notify"の概要
・トークルームにメッセージを送信できる
・LINEアクセストークンをアプリに指定することで、
 特定のアクションが起きた時に、
 通知メッセージを指定したトークグループに送付できる

◆手順
1.下記のページにてLINE Notifyにアクセス。

https://notify-bot.line.me/ja/

2.送付したいトークグループが存在するLINEアカウントにログインする。

画像1

3.ログイン後、左上のブラウザ設定「ぁあ」をタップし、「デスクトップ版Webサイト」を表示をタップする。

画像2


4.右上をタップしマイページを開く。「トークンを発行する」をタップする

画像3

5.「トークンを発行する」を画面に沿って入力。

画像4

6.トークン名を入力(自分が分かる名前であれば問題なし)
7.通知を送付したいトークグループを選択
8.「発行する」をタップ
9.画面上のコピーを押してアクセストークンをコピーする

準備その2 Google Apps Scriptで実行するプログラムを作成・デプロイ

Google Apps Script上で、実行するプログラムを作成/保存し、トリガー設定(プログラムを動かす契機を指定)します。

1.Google Apps Scriptへ行く。

https://script.google.com/home

2.「Start Scripting」を押下する。

画像5

3.転送したいメールが届くGメールアカウントでログインする。

画像6


4.左上の「新しいプロジェクト」をクリック

画像7

3.デフォルトで記入されているもの(function myFunction(){})をすべて消し、以下のプログラムをコピペする

【注意】
注意1:本手順はスマホ(iPhone)では、カーソルの移動とペーストがやり辛く、苦労したので、PCで実施しました。
注意2:日付、時刻を取得する関数がアメリカ時間(ワシントン)のようで、、日時が日本と14時間ズレます。(特に困らないので、日本に合わせる対応しませんでした。)

var lineToken = "xxxxxx"//LINE notify token
var words = ""//検索したい文字をスペースで区切って入れてください (例)あああ いいい ううう
var f_body = 1//0:通知に本文を表示させない、1:通知に本文を表示させる
var interval = 1//何分前からの新着メールを確認する?


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 now_time = Math.floor(new Date().getTime() / 1000);//現在時刻を変換
 var time_term = now_time - ((60 * interval) + 3); //秒にして+3秒しておく

 //検索条件指定
 var strTerms = '(label:yyyyyy subject:{' + words + '} is:unread after:' + time_term + ')';

 //LINEへの転送情報を取得し整形する
 //メモ:アメリカ(ワシントン)との時差は14時間
 //メモ:getMonthは月に応じた0−11の整数を取得
 var myThreads = GmailApp.search(strTerms);
 var myMsgs = GmailApp.getMessagesForThreads(myThreads);
 var valMsgs = [];
 for (var i = 0; i < myMsgs.length; i++) {
 var year = myMsgs[i].slice(-1)[0].getDate().getFullYear();
 var month = myMsgs[i].slice(-1)[0].getDate().getMonth()+1;
 var day =myMsgs[i].slice(-1)[0].getDate().getDate();
 var japanHour = myMsgs[i].slice(-1)[0].getDate().getHours() + 14;
 var minute = myMsgs[i].slice(-1)[0].getDate().getMinutes();

   valMsgs[i] = " " + year + "_"+ month + "_" + day
     + " " + japanHour + ":" + minute
     + "\n[from]" + myMsgs[i].slice(-1)[0].getFrom()
     + "\n" + myMsgs[i].slice(-1)[0].getSubject()

   if (f_body == 1) {
     valMsgs[i] = valMsgs[i] + "\n\n[Message]\n" + myMsgs[i].slice(-1)[0].getPlainBody();
   }
 }

 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])
   }
 }
}

4.コードを書き換える

・1行目

var lineToken = "xxxxxx"//LINE notify token

「lineToken=”xxxxxx”の xxxxx を、LINEのアクセストークンに書き換える

~2行目以降は変更不要。お好みで。~

・2行目

var words = ""//検索したい文字をスペースで区切って入れてください (例)あああ いいい ううう

そのままでもOK。(全部の未読メールがLINEに転送される)
もしタイトル(subject)に検索をかけたい場合は、 2行目の””の中に、検索ワードをスペースで区切って入力(or条件で検索を実行)

・3行目

var f_body = 1//0:通知に本文を表示させない、1:通知に本文を表示させる

そのままでもOK。
LINE通知に本文の内容まで載せたくない場合は、「1」を「0」に変更する。

・4行目

var interval = 1//何分前からの新着メールを確認する?

そのままでOK。「何分前の未読メールをチェックするか」を指定する。
この後の「トリガー設定」にも影響するので、そのままが無難。

5.プログラムを保存する
(Ctrl+Sか、ファイル→保存)
保存ボタンを押すとプロジェクトの名前を聞いてくるので、任意の名前を入力する。以下の画像の「GMAILtoLINE」のところ)

画像9

準備その3 テスト実行

まずは自分あてにメールを送信する。
実行→関数を実行→「main」を実行する(メール送付後、1分以内に実行)

画像10

最初に実行する場合、googleアカウントへの接続承認画面が出てくるので、ビビらず、「詳細」をクリック。
リンク(以下の例では「GMAILtoLINE(安全ではないページ)に移動」)をクリック。

画像11

画像12

すでに1分以上経過してい待っている場合は、再度メール送信
実行→関数を実行→「main」を実行する

届けば成功。

準備その4 トリガーの設定

準備2で作ったプログラムを動かすトリガー(契機)を設定します
1分ごとに実行するようにします。

編集→「現在のプロジェクトのトリガー」をクリック

画像13

右下にある「トリガーを追加」をクリック(見落としがち)

画像14

以下のような設定にする

画像15

これで準備はすべて完了。全件(もしくは固定キーワードでタイトル検索)転送されます。

特定のメールだけ転送する追加手順は、こちらに書きました。

更新履歴

20210112 初版投稿

#自動化
#転送
#GoogleAppsScript

関連知識に関する書籍

・Google App Script



この記事が気に入ったらサポートをしてみませんか?