2021/09/26

OsidOriのデータバックアップ機能が改善されたのでデータ変換方法も変わります

_2021/09/25「MFFマクロV2.23を公開しました」を受けて、OsidOriから出力した明細データの変換方法の解説をやり直します。なお、データ出力の手順そのものは2021/08/04「OsidOriのデータバックアップ機能実装は家計簿アプリ業界の画期となるか」と変わりません。すなわち、UIは改善されていない、ということです(泣)。

1.OsidOriのデータ形式はどのように変わったか

_はっきり申し上げれば、筆者の「振替元・振替先の口座名がデータから欠落している」という指摘(2021/08/04の記事)に対し、H列に振替元欄・I列に振替先欄が追加されただけです↓。この2列は振替取引の場合にのみ情報が入り、その他のデータ列には変更は無いようです。

OsidOri改修後の明細データサンプル(振替取引に番号を付けた)

_↑の例では、振替取引が①~⑧の8つあります。このうち、②・⑤は金額が負の値、④は正の値になっています。振替元・振替先が明示的になっているのに金額が負になるのはおかしな話だ…。

_また、①・③・⑥・⑦・⑧は、日付・振替元・振替先が同一でありながら、金額の正負だけが異なる2行のデータがあり、非常に奇怪な動作となっております。

_この2点について2021/09/17「MFFマクロのOsidOri対応の現状について」で開発元に問い合わせていたわけですが…その回答を要約しますと↓のようになります。

OsidOriの振替出力明細のデータ出力の仕様

_OsidOriは、2020/12/30「OsidOriでパートナーと情報を共有した場合の動作(修正あり)」で解説しましたように、登録した口座を”個人画面”(わたし)または”家族画面"のどちらかの画面に所属させることになっています。そして、ある口座Aから別の口座Bに振り替えた場合、そのデータがどのように出力されるか、は、「口座A」と「口座B」がそれぞれ"個人画面"と"家族画面"のどちらに所属しているかによって変わるのです。それを図式したのが↑の図版です。

_そして、さらに問題を複雑にするのが…「その明細データを"個人画面"と"家族画面"のどちらから出力したか」によっても変わってくる、という点です。↑↑のサンプルデータは"個人画面"から出力しています(J列が全て"個人"になっている)

_何故OsidOriがこのような仕様になっているのかというと…結局のところ"個人画面"・"家族画面"それぞれの収支や資産残高を計算するための生データを吐き出しているだけだからです(あくまで筆者の推測ですが)。だから、"個人画面"から出力したデータの場合、"個人画面"の資産残高を減らすような振替取引の金額は負となり、"個人"→"個人"の振替取引は資産残高には影響を与えないので正負両方のデータが含まれているわけです(振替取引そのものを無かったことにする、という以前の動作方針はさすがに困るので、そこは改善されています)。これらのことは"家族画面"でも全く同じです。

_ちなみに、上記の①~⑧の振替取引は、筆者は↓のように入力しています(個人画面で表示させています)

  • ②・⑤:「わたし」に所属する口座→「家族」に所属する口座 の振替
  • ④:「家族」に所属する口座→「わたし」に所属する口座 の振替
  • ①・③・⑥・⑦・⑧:「わたし」に所属する口座→「家族」に所属する口座 の振替

_となっていることがお判りいただけましょう。

OsidOriに入力した振替取引

_こんな複雑な仕様になっていることは、今のところ、FAQを見てもどこにも解説されていません。困ったもんだ。

2.OsidOriから出力した明細データをMFF形式に変換する

_OsidOriから出力されるCSVファイルは、UTF-8でエンコードされたBOM付のテキストファイルとなっており、(CSVファイルがExcelに関連付けられていれば)CSVファイルを開くことで自動的にExcelに読み込まれます。なお、MFFマクロは、空のワークシート上で動作させるとマクロでCSVファイルを読みに行くようになっていますが、この機能を使うと逆に文字化けしますのでご注意下さい。

_CSVファイルを開いた状態でMFFマクロを動作させると、MFF形式への変換動作が実行されます↓。以前の2021/08/06「OsidOriのデータをMFF形式経由で他の家計簿アプリ向けに変換する方法」では(このころのMFFマクロはV2.21)、振替取引をどのように処理するか尋ねるダイアログを表示するようにしていましたが、V2.23で廃止しました。

_上記の①~⑧の振替取引に対しては以下のような変換をしています。

  • ②・⑤:振替金額が負になっているので絶対値に変換し、振替取引としてMFF形式化する
  • ④:振替金額が正になっているので、そのまま振替取引としてMFF形式化する
  • ①・③・⑥・⑦・⑧:重複する取引明細を削除し、振替取引としてMFF形式化する(ただし「お店…」欄のデータについては、2つのデータのうち、文字列の長い方を採用する)
OsidOri(改修後)のデータをMFF形式に変換した

_なお、口座名欄が黄色になっているセルがありますが↑…OsidOriでは、収入・支出取引を手入力する際に、口座を指定しないと「現金」という口座が自動的に指定されます。しかし、これは内部データとしては「口座未指定」として取り扱われ、CSVファイルとして明細を出力する際には口座名は「現金」にならず空欄にされるのです。そのため、MFF形式に変換されたときに「口座名が入力されていない」ということでセルが黄色になるわけです。このように、家計簿アプリのデータを活用するには、家計簿アプリの個々の動作についてよく理解しておく必要があります。

3.OsidOriの明細データをMFF形式に変換する処理の概要

_なお、MFFマクロの変換動作のチャートは↓のとおり。H列に振替元・I列に振替先の列が追加されただけで、2021/08/06「OsidOriのデータをMFF形式経由で他の家計簿アプリ向けに変換する方法」のチャートと基本線は変わりません。しかし、振替元・振替先が明示的になったという一点のみで、使い物にならなかったデータが一挙に実用的になりました。

OsidOri2MFF(改修後)の動作チャート

_…このように、OsidOriが出力するデータは、振替取引の解釈が非常に厄介でございまして…開発元とのやり取りの結果「そういう仕様である」ということが判明した次第です。これでようやくMFFマクロのバージョンアップを果たせました。ぜひご活用下さい。

注目の記事

家計簿アプリとデータをやりとりする際のファイル形式のまとめ

_今回の主題は…家計簿アプリとデータをやりとりするときに使用するファイルの形式について、です。筆者がこれまで MFFマクロ に対応させてきた家計簿アプリは27種類(Money通帳とあっと家計簿は別カウント)。まず、家計簿アプリからエクスポートする方向では↓のようになります。...

最近の人気トップ3