LINEをライフログ用インタフェースとして使ってみる


やること

LINEにテキストを入力したら、Google Spreadsheetに日付+テキストの行として追記するようにしてみます。

背景

いままで、ライフログというと大げさですが、家計簿的に使ったお金や、筋トレ回数、ランニングのペースや距離などを記録しようとしてきました。

自動記録されるようなアプリでも、自分で何かを入力する必要があったりすると、いちいちアプリを選んで入力するのが面倒で、長続きしなかったり、入力が不正確になったりしてしまってました。

ちょっとしたデータならスプレッドシートに記録すればよいですが、スマホからスプレッドシートを開いて入力するのも面倒で、こちらも長続きしません。

入力が簡単ならもう少し長続きするのではと思って、インタフェースとしてお手軽なLINEを使ってGoogle Spreadsheetに入力するようにしてみました。

利用するもの

  • Google Spreadsheet
  • Google App Script
  • LINE Messaging API

設定のステップ

ちょっと端折り気味ですが、設定方法を説明します。

1. Google Spreadsheetを用意する

記録したいスプレッドシートを選ぶ or 作り、そのスプレッドシートIDをメモします。
そのスプレッドシートの中で、LINEからの入力を書き込むシートを作り、その名前をメモします。

2. Google App Script上でコードを書いて公開する

Google App Scriptでプロジェクトを作り、以下のコードを貼り付けて保存します。

var SPREADSHEET_ID = 'ここにSpreadsheet IDを指定します';
var SHEET_NAME = 'ここにスプレッドシートのシート名を指定します';

function record(event) {
  var today =  Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/M/d');
  var messageText = '(テキスト、位置情報以外のメッセージ)';

  if(event.message.type == 'text') {
    messageText = event.message.text;
  } else if(event.message.type == 'location') {
    messageText = event.message.address;
  }

  // シートへの追記
  var ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  var sheet = ss.getSheetByName(SHEET_NAME);
  sheet.appendRow([today, messageText]);
}

function doPost(e) {
  // LINEからのメッセージ取得
  var evtArray = JSON.parse(e.postData.contents).events;

  evtArray.forEach(function(event) {
    // メッセージタイプの場合にスプレッドシートに記録
    if(event.type == "message") {
      record(event);
    }
  });

  return JSON.stringify({});
}

コード内の SPREADSHEET_ID、SHEET_NAME に、「1. Google Spreadsheetを用意する」でメモしたものを指定します。

そのあと、「公開」⇒「ウェブアプリケーションとして導入」を行います。
「アプリケーションにアクセスできるユーザー」は「全員(匿名ユーザーを含む)」に設定しておきます。
公開されるとその URLが表示されます。

3. LINE Messaging APIの設定を行う

いろいろなところに設定方法が出ているので、詳細は割愛します。
「プロバイダー」を作って、その下に今回のアプリ用の「Channel」をつくります。

  • 今回のアプリはフリーの範囲で動きます
  • アクセストークンの「再発行」をクリックします
  • 「Webhook送信」は「利用する」にします
  • Webhook URLに、Google App Scriptで公開した URLを指定し、「接続確認」を行います
  • 「自動応答メッセージ」は「利用しない」にします

以上の設定を行ったら、このChannel基本設定ページの下にあるQRコードを、スマホ等のLINEアプリから読み込めば利用可能になります。

おわりに

LINEに何か入力して応答するというプログラムではないので、一般的なBotアプリとは趣が異なりますが、こんな使い方もありうるということで、紹介してみました。