たるこすの日記

たるこすの日記

リアルからバーチャルへ、バーチャルからリアルへ

Suica を読み取って Google スプレッドシートに交通費を記入するシステム「にゃーん」を作った話

はじめに

こんにちは、たるこすです。
みなさん、交通費申請していますか?

私が所属している株式会社ホロラボでは、毎月 Google スプレッドシートに1か月分の交通経路と交通費を記入して申請することになっています。
ですが、毎日オフィスに行くわけではないので定期券を持っておらず、オフィスに行った場合も含めて交通費を記入しないといけないため、 毎月結構な量になってしまいます。

この作業が面倒だったので、Suica などの交通系 IC カードの履歴を読み取り、自動的に Google スプレッドシートに記入するシステム「にゃーん」を開発しました。

twitter.com

「にゃーん」の仕組み

「にゃーん」の仕組みですが、は大きく分けると以下の2つからなっています。

Suica の履歴を読み取る部分はえむにわさんのコードを利用させていただきました。

github.com

履歴として読み取れるのは直近20件の利用データです。
このデータに含まれているのは利用金額ではなくその地点での残高のため、前後2件のデータから利用金額を求めています。
また、読み取れる履歴には電車やバスなどの交通費だけでなくチャージやコンビニ等の支払い履歴も含まれていますが、 交通費だけのデータだけをスプレッドシートに書き込むようにしています。

交通費を書きこむスプレッドシートは、テンプレートとなるシートを用意しておいてそれを人ごと月ごとにコピーするようにしています。

スプレッドシートに重複してデータを書き込んでしまってはいけないので、 履歴データに含まれる ID(履歴ごとに1ずつ増えていく番号)を使ってまだ書き込まれていないデータのみを書き込むようにしています。
どの ID までを書き込んだかという情報は、交通費のシートとは別のスプレッドシートに書き込んでいます。

スプレッドシートへのデータの書き込みは、Google Spread Sheet API を使って行っています。 また、フォルダの作成や交通費申請シートのテンプレートのコピーは Google Drive API を使っています。

「にゃーん」を使ってみたい方へ

ソースコードGithub で公開しています。 github.com

セットアップ方法も Github のページに記載しています。
いくつか機材が必要にはなりますが、是非試してみてください。

セットアップに関する不明点は、Github の方に issue としてあげていただければと思います。

利用した機材

私は以下の機材を利用しました。

Raspberry Pi 3

PaSoRi RC-S380

ソニー SONY 非接触ICカードリーダー/ライター PaSoRi RC-S380

ソニー SONY 非接触ICカードリーダー/ライター PaSoRi RC-S380

スピーカー

みなさんからの「作ってみたよ」という報告をお待ちしています!