この記事を読むのに必要な時間は約 2 分58秒です。
こんにちわ。
LINEでとある機能を自動化したので、その備忘録的に本記事を投稿したいと思います。
スポンサーリンク
やりたい事
LINEのグループトークに投稿された内容から判断して、何も投稿されていなければ催促を自動で促す、投稿されていても投稿内容次第では催促、対応完了済の投稿であれば催促しない、というニーズが先日ありました。
そのため、グループトークの内容自体をDBのように保存してある程度操作出来ないかと考えて実装した内容となります。
- LINEのグループトークの内容を記録して残しておきたい
- グループトークの内容から判断して○○したい
等のニーズに対して便利かなと思います。
実装概要
今回、実装に当たって下記を利用しています。
- LINE Messageing API
→LINEグループ内に投稿された内容を取得するために必要
こちらのサイトがめちゃめちゃ分かりやすいです - Google Apps Script
→LINEの各種APIとLINEに投稿されたデータの各種扱い - Spread Sheet
→Googleのサービス。あえて説明不要かと - LINE Notify API
→Spread Sheetに書き込まれた内容から判断してLINEグループ内に通知させる機能
使い方は調べれば溢れていますが、参考に一つリンクしておきます。
実装内容
私がGASで実装したコードについて順番に記載しておきます
- LINEグループから投稿された内容を取得
→文字のみ取得しているため、スタンプや画像は取得していませんが、取得しようと思えば可能です
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// メッセージ取得処理 function doPost(e) { // レスポンス取得 const responseLine = e.postData.getDataAsString(); // JSON形式に変換 const responseLineJson = JSON.parse(responseLine).events[0]; // メッセージデータの場合、次処理へ if (responseLineJson.type == 'message') { insert_ss(responseLineJson); } } |
- 取得したデータをスプレッドシートに書き込み
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// スプレッドシートへの記載 function insert_ss(responseLineJson) { const message = responseLineJson.message; const input_text = message.text; const sheet = SpreadsheetApp.openById('Spread Sheet ID'); // 最終行に対して追記 var date = sheet.getDataRange().getValues(); var null_line = date.length + 1; // A列の最終行にデータを追加していく var position = 'A' + null_line; sheet.getRange(position).setValue(input_text); } |
- スプレッドシートに記載された内容から処理をしてLINEに通知
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 |
function Reminder() { // スプレッドシートから情報取得 const sheet = SpreadsheetApp.openById('Spread Sheet ID'); const range = sheet.getRange('A2:A10000'); // スプレッドシートの内容に合わせてLINE Notifyを利用して通知 if('アレコレ'){ text = "リマンド内容"; // 条件を満たしたらLINEに送付 sendHttpPost_Reminder(text); } } // LINE Notifyを利用するための関数 function sendHttpPost_shiftReminder(text){ var token = ['token']; //LINEで自動通知をする宛先のトークン。 var options = { "method" : "post", "payload" : "message=" + text, "headers" : {"Authorization" : "Bearer "+ token} }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); } |
感想
LINEで昔のトーク履歴を検索するのが結構面倒だったりするので、今のところ作ってみてLINEのグループトークの内容を保存しておくのは便利だなと感じています。
LINE Messaging APIについては以前簡易的なLINE botを作るのに利用したことがありましたが、bot以外に利用用途があるとは思っていなかったので驚きでした。
非常に簡単な内容ですが、何かの参考になれば幸いです。
あわせて読みたい

LINE Messaging APIでグループ参加者のuserIdと表示名を取得するこんにちわ。
以前こんな記事を記載しました。
https://popo-finance.com/line_database
その後...