こんにちわ、どばきちです。
前回はiPhoneの領収書整理に困っていて自動化しましたっていうお話をさせて頂きました。詳しくはこちらをご覧ください。
前回の話に出てきたiPhoneの領収書の自動化はどう実現したのかというところについてご紹介させて頂きたいな、と思います。
システム構成
全体としては以下の構成要素の組み合わせでできています。
上記の図を踏まえつつ、ざっくりとした処理フローについて解説します。
- Appleからの領収書はGmail宛に届く
- Google Apps Scriptは月一で月初に動作する(処理実行時の前月の分を処理する)
- Gmailに届いたメールから前月に「Apple からの領収書です」とタイトルが付けられたものを抽出する
- 領収書メールから購入情報(決済金額、購入内容等)を取得して、スプレッドシートの一覧表に反映する
- htmlファイルとして領収書を保存する
- 全件分上記の処理が完了したらSlackで通知する
構成要素
Gmail
Appleの領収書はGmailアカウントで受信するようにしています。特に変わった設定などはしていません。
GAS(Google Apps Script)
諸々の処理はGAS(Google Apps Script)で対応しました。GASには今回の仕組みを構築する上で便利な以下の様な特徴があります。
GASの特長
- 無料で使える
- 時限での実行も可能
- Google Spread Sheet, Google DriveなどGoogleのサービスとの連携が簡単にできる
- 外部ライブラリも使える(今回はParserというスクレイピング用のライブラリを使いました)
GASの開発をするならClaspを使うと良いと思う
GASを直接Googleドライブ上で編集することもできるのですが、Claspというnodeのパッケージを使うことでローカル環境でTypescriptを使って開発することもできます。今回はclaspを使って開発しました。
Claspを使ってよかった点
- TypeScriptでの開発ができ静的解析が使えるので、謎のエラーやこの変数の型は何だっけ?問題に悩まされなくなる
- gitでコード管理ができる(GASを直接Googleドライブ上で編集する場合はコード管理がしづらい)
その他Googleサービスとの連携がラク
スプレッドシート、Googleドライブは特に追加のライブラリを入れなくてもそのままGASで扱うことができます。ドキュメントのパスを貼っておきます。
Google Apps Script SpreadsheetApp
利用した外部ライブラリ
以下2点を今回は利用しました。
- Parser : スクレイピング用パーサー(Appleからの領収書はHTML形式のファイルなので、このファイルをスクレイピングすることで値を取得しました)
- SlackApp:Slackへの通知用(https://github.com/soundTricker/SlackApp)
Google Drive
領収書の保存先として利用しました。
GoogleドライブはローカルPCにマウントして外付けHDDの様に扱うこともできてとても便利です。
おわりに
Gmail, GAS, Googleドライブ、スプレッドシートどれも全て無料で使えるので本当にありがたいなと思います。
僕と同じ様に領収書問題に悩まされる方や、GASを使おうか迷っていた方、GASのコード管理を不安に思っていた方などに一例をご紹介することで何かしらの気づきに繋がったらいいなと思っています。
それでは、また!
この記事へのコメントはありません。