#はじめに
学校からの連絡は、電子メールで配信するようになっています。しかし、一人ひとり登録するのは面倒で、グループへの投稿が可能なLINEの方が便利です。
また、私はサークルでの連絡手段としてメーリングリストを使ってましたが、LINEの方が便利です。しかし、ガラケーしか持っていないメンバーがいてLINEに移行できません。そこで、電子メールからLINEに転送するためIFTTTを使っておりましたが、2019年にGmailからLINEへの転送サービスが止まってしまいました。
その後 Google apps script を使ったGmailからLINEに転送する記事を発見し、それを参考に作成して、LINEへの転送を運用しました。そのやり方と注意点などを記載します。
#準備
GoogleアカウントとLINEアカウントが必要です。
#LINEの設定 - LINE Notify からアクセストークンの発行
-
[LINE Notify] (https://notify-bot.line.me/ja/) にアクセスしてログインします。マイページからトークンを発行するをクリックします。
-
LINE Notify の設定は以上です。
Google apps script の設定
-
[Google apps script] (https://www.google.com/script/start/) から Start scripting を選び、googleアカウントでログインします。
-
Google apps scriptの画面から 新しいプロジェクト を選択します。
- 次のコードを入力します。1行目 lineTokenの"*************"には先程コピーしたLINE Notifyのトークンをコピーします。
var lineToken = "*************"; //LINE notify のトークンを入力
var get_interval = 15; //〇〇何分前まで受信したメールを転送対象とする。転送エラーを考慮してx3程度が良いと思います。
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 * get_interval); //変換
//検索条件指定
var strTerms = '(is:unread after:'+ time_term + ')';
//取得
var myThreads = GmailApp.search(strTerms);
var myMsgs = GmailApp.getMessagesForThreads(myThreads);
//var valMsgs = [];
//var msgnum = 0;
for (var i = myMsgs.length - 1; i >= 0; i--) {
var msgsInThread = myMsgs[i];
for (var j = 0; j < msgsInThread.length; j++) {
var msg = msgsInThread[j];
//未読のみ
if (msg.isUnread()) {
//メールを既読にする
msg.markRead();
if (msg.getFrom() !== "apps-scripts-notifications@google.com"){
//メッセージ作成(絵文字も可)
var msgbody = "\n" + msg.getSubject() +
"\n"+msg.getFrom() + "より" +
"\n"+msg.getPlainBody();
//msgnum++;
send_line(msgbody);
console.log(msg.getSubject());
}
}
}
}
}
function main() {
new_Me = fetchContactMail()
}
-
名前(ここでは「LINEへ転送」とします)をつけてスクリプトを保存します。画面左上の矢印をクリックして戻って、プロジェクト横の︙マークをクリックしてトリガーを選択します。
-
画面右下のトリガーを追加をクリックし、次のように設定します。時間の間隔はメールを転送する間隔となります。トリガー回数には制限がありますので、5分以上が無難です
-
設定したら保存します。
- 保存すればトリガーが実行され、新規メールがあればLINE Notifyのトークンのトークルームに転送されます。
運用して気づいたこと
ときどき、スクリプトが実行エラーになります。そのたび指定した頻度でエラー通知が来ます。少し鬱陶しいのでエラー通知メールは転送されないようにapps-scripts-notifications@google.comからのメールは転送処理しないようにしました。
また、一回だけトリガーがストップしメール転送もストップしたことがあります。転送されないことに気がついたのは1週間後でした。原因はわかりません。学校の連絡は重要な内容もありますので、電子メールとの併用をお勧めします。
#参考URL
スクリプトのほとんどは次の記事を利用させていただきました。
[Gmail to LINE]GASで新着メールをLINEに転送する