見出し画像

freee API, Google Apps Script(GAS)活用による経理業務の効率化、手順適正化

当社では会計システムにfreeeを使用しております。
追加料金なしで利用できるfreee APIとGoogle Apps Script(以下GAS)を活用し、経理業務の効率化、手順の適正化を進めていますので、その内容をシェアさせていただきます!

0. 経理業務において実現したい仕組み

当社の経理業務において、早急に対応する必要があった以下3点について改善を進めました。
 ・freeeによる適切な経理処理の仕組み
 ・freeeで保持する情報を効率的に使用できる仕組み
 ・不自然な出金があった場合に速やかに気付ける仕組み(横領等の不正防止)

1. freeeによる適切な経理処理の仕組み

(1) freeeの経理処理機能をそのまま使用するリスク

freeeは操作の自由度が非常に高く、ストレスなく経理処理を完了できるよう工夫されています。非常に便利な仕組みですが、自由度が高すぎる事から不適切な伝票を作成してしまうリスクがあります。
(例:品目タグ、部門タグの入力ナシでの伝票作成ができてしまう。メモタグに何でも自由に入れられる。部門タグを簡単に新設できてしまう。 等)

経理処理を行う人が一人である場合は大したバラツキは発生せず、大きな問題にはなりませんが、不正防止の観点からも経理業務は複数名で行う必要があると考えています。
一方で、複数名で好きなようにfreeeの伝票入力を行うと、インプット内容がバラバラになってしまい、B/S科目の残高管理ができなくなってしまう等の不具合が出てきます。

適切な経理処理の為には明確な経理処理のルールを設け、全社で確実に順守する事が大切です。

(2) 経理処理の社内ルールを全入力者に徹底する方法

freeeへの入力情報に制限を設けるのが最も手っ取り早い方法です。(「xxx費を使う時は忘れずに〇〇のコードを入れましょう」と経理担当から全社にアナウンスし続ける手法は実効性が極めて乏しい)

それを実現するために、伝票入力専用様式を作成し各取引担当者に必要項目を入力してもらうフローに変更しました。そして、入力様式に制限を設ける事で社内ルールに反した入力ができないような仕組みにしました

[具体的な制限の内容]
・freeeのマスタを使用する項目はプルダウン入力のみ許可する。
 (毎日自動でfreee APIでマスタを出力し、最新のマスタが反映されるように設定)
・入力必須/不要の項目の色分けによる注意喚起

当社で使用しているfreeeの入力様式

画像1

勘定科目毎に各項目のインプット要否をまとめたテーブルを用意し、入力様式中に項目毎に任意/必須の情報を表示させるようにしました。
→VLOOKUP関数で入力要否情報を取得し、様式内に表示させる方法で作成しました。セルの色については条件書式設定のカスタム数式にVLOOKUP関数を入れる事で入力不要のセルをグレーアウトするようにしました。

画像2

GASを利用する事で、入力結果の外観チェックを自動で行っています。
・入力必須項目の入力モレ(件名や日付の他、選択した科目の入力必須項目も確認)
・入力内容同士の整合性

(参考)その他、様式検討にあたり考慮したこと
freeeは登録できる情報は入力枠が限られており、経理処理や採算性の確認等に必要な情報の集約がそのままではしづらい仕組みになっています。
(自由に使えるメモタグは複数入力すると、実績出力時に全て結合されてしまうので、そのままでは使えない)
当社ではfreeeの備考欄を以下のように使用することで、詳細な情報をfreeeに集約できるようにしました。

・「 | 」を区切り文字とし、項目名と合わせて結合して備考欄に入力する。
  (例: |数量:1||通貨:USD||現地通貨額:100|)
・追加情報の内容毎に入力内容の形式を定める。
  (例:「数量」は数値、「通貨」はマスタ参照 等の入力規則を設ける)

予め区切り文字を定めておくと、MID関数を利用して必要な情報を簡単に取り出すことができます。

(例)上記の例で「数量」を取り出したい場合
MID(DLデータ,FIND("|数量:",DLデータ)+LEN("|数量:"),FIND("|",DLデータ,FIND("|数量:",DLデータ)+1)-FIND("|数量:",DLデータ)-LEN("|数量:"))
備考欄には1,024文字まで入力可能なので、非常に多くの情報をfreeeで保持することが可能です。
(当社は枠を11個作成しました。もし足りなくなっても、枠を増設すればすぐに対応できます)

(3) 入力結果のfreeeへの反映

以上の機能を備えた入力様式を全社共有する方法を検討しました。当社では以下の通り検討し、最終的にGoogleスプレッドシートによる運用を行うことにしました。

画像3

(4) freeeへの伝票投入の仕組み

以上の検討結果から、当社は以下の仕組みで伝票投入を行っています。スプレッドシートは異なるファイル間の参照を問題なく行えることから、伝票入力様式、伝票入力結果保存用ファイル、経理チェック用ファイルの3つのファイルを使って伝票起票・経理確認を行っています。

画像4

ファイルを分割することで、アクセス権限を細かく設定し、不正防止の効果を高める事ができるうえに、過去の類似取引のコピーも可能になるため、効率的な運用ができるようになりました。

今後は伝票作成者と経理担当者のGoogleのIDを突合し、伝票の自己承認ができない仕組みを実現していきます(自分で切った伝票を自分で承認する状況は不正の温床となるため)

2. freeeの情報を効率的に活用する仕組み

以上の方法で適切に入力された情報を効率的に使用できるよう、以下の仕組みを作りました。

(1) 総勘定元帳の出力

定期的にfreeeで総勘定元帳を出力し、スプレッドシートへ貼り付ける。
総勘定元帳をJSON形式で出力するAPIがないので、ここは手動でやっています。総勘定元帳のJSON出力ができれば、区切り文字「|」を参照した情報の抽出もGASで行いデータを軽くできるうえ、タイマーで自動更新できるので、ぜひ欲しい!
総勘定元帳の出力先ファイルとそれを参照するファイルを分けた方が効率的と考え、ファイル毎の機能を分けた運用をしています。

(2) 総勘定元帳の参照

総勘定元帳の情報を出力したスプレッドシートを別のスプレッドシートで参照し、QUERY関数で整理をすると、大量のデータでも素早く情報をまとめる事ができます。
貸借の備考情報が結合されてしまう仕訳帳よりも総勘定元帳の方が情報が扱いやすい為、当社では総勘定元帳を使っています。

(3) B/S勘定の品目コード別残高の整理

B/S勘定の科目には品目コードが便利です。当社では残高管理用のキーを品目欄に入力しています。
(1)のスプレッドシートを参照し、品目コード別に集計できる以下のような様式を用意しておく事で効率的に残高管理を行えます。

画像5

(品目名はQUERY関数とUNIQUE関数を組み合わせる事で、一意のリストを作成できます。あとは品目名と明細計上月を参照しながらSUMIFS関数で簡単に集計できます。)

※必要な事前準備
freeeでは期末残高繰越時に以下のように前年度に入力した品目コードが消えてしまうため、毎期首に手動で振替をする運用も必要です。この点は少し手間ですが、振替工数以上の効果はあると思います。

画像6

仮払金(品目xxx) / 仮払金 xxx のような伝票を入れ、品目コード別に期首残高を確認できるようにします。

3. 不自然な出金があった場合に速やかに気付ける仕組み

銀行の入出金通知サービスは非常に高額で、全口座導入すると大変なコストになってしまいます。当社ではコストをかけずに残高変動を把握する為にfreee内で取得された預金残高を定期的にAPIで参照し、残高変動時にSlackへ通知するスクリプトを作成しました。

以下の流れで残高と増減内容を取得しています。
① freee APIで銀行口座の残高を取得
② スプレッドシートへ残高を出力する
③ スプレッドシートに残しておいた前回の出力額と比較し、増減金額を計算する
④ freee APIで銀行口座の入出金明細を取得
⑤ 日付が新しい順に入出金額を加算し、③の金額になるまで続け、そこまでの摘要欄を取得する。

以上の取得した情報を整理し、Slackへ通知します。

このように、定期的に残高変動の通知をSlackへ飛ばすことで、不自然な出金があった際に速やかに気付ける仕組みにしました。

画像7

まとめ

以上の取り組みにより、経理業務の効率化、フローの適正化が達成できました。

伝票作成の時間はfreeeの画面上操作と変わらず、必要な情報を適切にfreeeへ反映させることができています。感覚的には、入力情報のチェック、訂正に係るコミュニケーションを考慮すると時間ベースで3割程度は効率化されたと思います。
また、開発や営業の現場メンバーとともに経理処理に関わることで、透明性の高い業務フローとすることができたと思います。

今後はAPIを活用し、他の業務システムとの連携や、財務情報の加工(採算性の確認等)の効率化も進めていきたいと考えています!

この記事が気に入ったらサポートをしてみませんか?