グループLINEにて共有を行っている業務情報について、全くDB化がされておらず、情報の集計を行う際は「過去のトークを遡って目視で確認しExcelにまとめる」といったアナログ手法をとっていた。
しかし最近になって、LINEボットとGAS(Google Apps Script)を使ってトーク内容をGoogleスプレッドシートへ転記することができると分かったので、今回行った手順をまとめておく。
コンテンツ
目標
今回目指すところは、LINEのトークのうち、あるフォーマット(今回は$で始まるメッセージ)で送信されたメッセージのみをGoogleスプレッドシートへ転記するボットを作る、というところまで行っていく。

事前登録
今回利用するサービスは以下の2つ。
それぞれアカウント登録を済ませておく。
LINE Developers
大半の日本人が既に持っているLINEアカウントがあれば利用できる。
https://developers.line.biz/ja/
もはや説明不要だろう。
LINE Messaging API でボットを作成
LINE Developersにログインし、まずはチャンネルを作成する。

チャンネルタイプは「Messaging API」を選択する。
チャンネル名などは適当でOK。
チャンネル作成後に変更する箇所は以下のとおり。
まず、Messaging APIタブの「Use webhook」をONにする。

次に「LINE Official Account features」欄を次のとおり設定する。

Google Apps Script プログラム作成
次にLINEボットのプログラムを書いていく。
Googleドライブから「新規」をクリックし、以下のとおり「Google Apps Script」を選択しよう。

すると新規タブでエディタが立ち上がるので、以下のとおりコードを書いていく。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | function doPost(e) { // 投稿されたメッセージを取得 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; if (userMessage.match(/^\$/)) { // $から始まるメッセージの場合、$を除いた文字列を再代入 userMessage = userMessage.substr(1); } else { // $から始まらない場合は何もしない(処理終了) return ; } // スプレッドシートへ保存======================================= var response = e.postData.getDataAsString(); var spreadsheetId = "" ; var sheetName = "log" ; var spreadsheet = SpreadsheetApp.openById(spreadsheetId); var sheet = spreadsheet.getSheetByName(sheetName); // 空白・タブ・改行で区切り配列に変換 var arr = userMessage.split(/\s/); // 配列の先頭に日時を代入 arr.unshift( new Date()); // セルの最下部に配列を転記 sheet.appendRow(arr); // ======================================= return ContentService.createTextOutput(JSON.stringify({ 'content' : 'post ok' })).setMimeType(ContentService.MimeType.JSON); } |
少しコードを解説すると、LINEでメッセージが投稿されるとWebhookによりdoPostメソッドが呼び出される。
そのため基本的にやりたい処理はdoPost内に書いていけば良い。
まずは投稿されたテキストメッセージを取得し、if文で「$」で始まらない場合は無視するよう分岐させる。
「$」で始まる場合は処理を行い、変数に設定されたスプレッドシート内に投稿された内容を記録するようにしている。
なお「spreadsheetId」は、シートのURL欄の「/d/」と「/edit」の間の乱数がIDに該当する。
今回はメッセージを区切り文字により分割・配列化し、その配列に投稿日時を追加してシートへ転記するようにしてみた。
Webhook URLの設定
GASの編集が終わったら、メニューバーの「公開」→「ウェブアプリケーションとして導入」を選択し、Webhook用のURL(Current web app URL)を取得する。
Project versionは「New」、Execute the app asは「Me」、Who has access to the appは「Anyone, even anonymous」を選択して公開する。
この時、認証を求められ、さらにSSLの警告メッセージが表示されたりするが、「詳細」から無理やりアクセスして認証を進めていく。
最後に再びLINE Developersに戻り、「Messaging API」タブの「Webhook URL」欄に先程GASで取得したURLをペーストする。
ここまで出来たら、QRコードをスマホで読み取り、ボットを友だち登録する。
そしてグループLINEに招待すればOK。
後はメッセージの先頭に「$」がついていれば、自動的にスプレッドシートに内容が転記されるはずだ。