LINEとメールを連携させて、LINE未利用ユーザとLINEする方法(Ver.1)
【追記】更新版(Ver.2)の記事を作りました。
新年度となり、新たなLINEグループが作られる事の多い時期となりましたね。
そんな時問題になるのが、LINEを利用していない方との連絡手段。
1対1のやり取りなら、メールを利用すれば済む話です。
一方、グループLINEの場合、LINEを利用していない方は「会話に参加できない」「決定事項などを誰かにメールで伝えてもらう必要がある」等、面倒なところがあります。
メーリングリスト等を利用するのも手ですが、それはそれでLINEユーザー側から面倒と言われかねません。
そこで、LINE未利用ユーザがLINEグループに参加できるよう、以下のようなシステムを作ってみました。
①LINE未利用ユーザ→特定のGmailアドレス→LINEグループ
②LINE未利用ユーザ←特定のGmailアドレス←LINEグループ
LINE未利用ユーザは特定のGmailアドレスにメールを送ると、その内容がLINEグループに投稿されます。
また、LINEグループ内に投稿があると、その内容が特定のGmailアドレスからLINE未利用ユーザに送信されます。
このシステムを実現することで、LINE未利用ユーザもLINEグループでの会話に参加できます。
というわけで、①、②に分けて内容を紹介したいと思います。
①LINE未利用ユーザがLINEグループに投稿
こちらを参考にさせていただきました。
コードは若干変更し、以下のようにしました。
今回の場合、メールのタイトルではなく送信者がLINE未利用ユーザであるかどうかを判定できれば良いので、Google Apps Scriptの2行目は以下のように改変しました。
"test@ezweb.ne.jp"はLINE未利用ユーザのメールアドレスです。適宜変更してください。
また、gmailではメールはスレッド単位で扱われるため、スレッドにおける最新の返信のみを投稿することで、「ガラケー等から返信で投稿した際にスレッドの全投稿がLINE上に再投稿される」という現象を回避しています。
②LINEグループの投稿をLINE未利用ユーザに転送
まず、こちらのページの「1.チャネルの作成」の内容を実行します。
アクセストークンの有効期限は0時間=無制限にしておきましょう。
続いて、こちらのページを参考にLINEグループへの投稿内容をメールで送信するプログラムを作ります。
コードは若干変更し、以下のようにしました。
LINEグループに投稿を行うコードをメールを送信するコードに変更した点と、ユーザーの表示名を取得する点が変更点です。
注意点として、LINEグループ内のユーザがLINE Botのアカウントを友達登録していないとユーザ名が取得できず「不明なユーザ」としてメールが転送されますので、グループ内ユーザに友達登録をお願いする必要があります。
というわけで当方ではこのシステムを活用しております。後は画像と動画に対応したいところです。
新年度となり、新たなLINEグループが作られる事の多い時期となりましたね。
そんな時問題になるのが、LINEを利用していない方との連絡手段。
1対1のやり取りなら、メールを利用すれば済む話です。
一方、グループLINEの場合、LINEを利用していない方は「会話に参加できない」「決定事項などを誰かにメールで伝えてもらう必要がある」等、面倒なところがあります。
メーリングリスト等を利用するのも手ですが、それはそれでLINEユーザー側から面倒と言われかねません。
そこで、LINE未利用ユーザがLINEグループに参加できるよう、以下のようなシステムを作ってみました。
①LINE未利用ユーザ→特定のGmailアドレス→LINEグループ
②LINE未利用ユーザ←特定のGmailアドレス←LINEグループ
LINE未利用ユーザは特定のGmailアドレスにメールを送ると、その内容がLINEグループに投稿されます。
また、LINEグループ内に投稿があると、その内容が特定のGmailアドレスからLINE未利用ユーザに送信されます。
このシステムを実現することで、LINE未利用ユーザもLINEグループでの会話に参加できます。
というわけで、①、②に分けて内容を紹介したいと思います。
①LINE未利用ユーザがLINEグループに投稿
こちらを参考にさせていただきました。
小田急あんしんグーパスの通知をLINEグループへ自動転送する方法 | 子育て親父の備忘録
この記事は、小田急あんしんグーパスの通知をLINEグループへ自動転送するための設定方法を備忘録として残しておくものです。 小田急線沿線の私立小学校に通う息子が、駅の改札でPASMOを利用して通過した際に、電子メールで通知 …
コードは若干変更し、以下のようにしました。
今回の場合、メールのタイトルではなく送信者がLINE未利用ユーザであるかどうかを判定できれば良いので、Google Apps Scriptの2行目は以下のように改変しました。
"test@ezweb.ne.jp"はLINE未利用ユーザのメールアドレスです。適宜変更してください。
また、gmailではメールはスレッド単位で扱われるため、スレッドにおける最新の返信のみを投稿することで、「ガラケー等から返信で投稿した際にスレッドの全投稿がLINE上に再投稿される」という現象を回避しています。
- // 適合条件をセット
- var FindSubject = 'from:test@ezweb.ne.jp;
- function getMail(){
-
- //指定した件名のメールを検索して最大5件取得
- var myThreads = GmailApp.search(FindSubject, 0, 5);
- //メール情報を取得し配列に格納
- var myMessages = GmailApp.getMessagesForThreads(myThreads);
-
-
- for(var i in myMessages){
- //スレッドにおける最新の返信のみ利用
- j = myMessages[i].length-1
-
- //スターがついていないものを処理
- if(!myMessages[i][j].isStarred()){
-
- var strDate = myMessages[i][j].getDate();
- var strSubject = myMessages[i][j].getSubject();
- var strMessage = myMessages[i][j].getBody().slice(0,200);
-
- //LINEにメッセージを送信する関数に日付、件名、メッセージをセット
- sendLine(strDate,strSubject,strMessage);
-
- //処理済みフラグとしてスターをつける
- myMessages[i][j].star();
- }
- }
- }
- function sendLine(strDate,strSubject,strMessage){
-
- //Lineに送信するためのトークン情報は書き換えてください
- var strToken = "トークンを貼り付け";
- var options =
- {
- "method" : "post",
- "payload" : "message=" + strMessage,
- "headers" : {"Authorization" : "Bearer "+ strToken}
-
- };
- UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
- }
②LINEグループの投稿をLINE未利用ユーザに転送
まず、こちらのページの「1.チャネルの作成」の内容を実行します。
Part 1: SAP Cloud Platform FunctionsでLINE BOT開発(オウム返し編) | SAP Blogs
アクセストークンの有効期限は0時間=無制限にしておきましょう。
続いて、こちらのページを参考にLINEグループへの投稿内容をメールで送信するプログラムを作ります。
【誰でもできる!】自分用LINE BOTの作り方
どうも、ITエンジニア yoshikiです。 お店や会社で使われている公式LINEのようなアカウントを自分用に作る方法を紹介します。
コードは若干変更し、以下のようにしました。
LINEグループに投稿を行うコードをメールを送信するコードに変更した点と、ユーザーの表示名を取得する点が変更点です。
- var ACCESS_TOKEN = 'アクセストークンを貼り付け';
- var url = 'https://api.line.me/v2/bot/message/reply'; // 応答メッセージ用のAPI URL
- /**
- * doPost
- * ユーザーがLINEにメッセージ送信した時の処理
- **/
- function doPost(e) {
-
- // メッセージ返信
- replyMessage(e);
- return ContentService.createTextOutput(JSON.stringify({ content: 'post ok' })).setMimeType(ContentService.MimeType.JSON);
- };
- /**
- * replyMessage
- * メッセージの返信
- **/
- var replyMessage = function (e) {
- var strBody = JSON.parse(e.postData.contents).events[0].message.text;
- var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
- var userId = JSON.parse(e.postData.contents).events[0].source.userId;
- var username = getUsername(userId);
- if (username == 0){
- username = '不明なユーザ';
- }
-
- var strTo="test@ezweb.ne.jp";
- var strSubject="LINE転送";
-
- //メッセージが無かったら殺す
- if (String(strBody) == "undefined") {
- return;
- }
-
- GmailApp.sendEmail(strTo, strSubject, "[" + username + "]" + strBody);
- }
- //Userの表示名取得
- function getUsername(userId) {
- var url = 'https://api.line.me/v2/bot/profile/' + userId;
- try {//エラー処理
- var response = UrlFetchApp.fetch(url, {
- 'headers': {
- 'Authorization': 'Bearer ' + ACCESS_TOKEN
- }
- })
- }catch(e){ //表示名を取得できなかったら
- return 0;
- }
- return JSON.parse(response.getContentText()).displayName;
- }
注意点として、LINEグループ内のユーザがLINE Botのアカウントを友達登録していないとユーザ名が取得できず「不明なユーザ」としてメールが転送されますので、グループ内ユーザに友達登録をお願いする必要があります。
というわけで当方ではこのシステムを活用しております。後は画像と動画に対応したいところです。
コメント
コメントを投稿