企業様より依頼いただいてスプレッドシートを利用した予実管理システムを構築しました。
使用技術
Google apps script
前提課題
- スタッフ毎の施術予約をスプレッドシート利用により管理していた
- 予約管理ファイルは店舗ごとにシートが分かれており、行には時間情報、列は日付情報が記載されており、各シートの下部数行を用いて、その日毎の実績は関数計算で出力されるようになっていた
- 予約については複数のメニューが存在し、わかりやすくするため「顧客名+施術メニュー」を記載したセルと、その時間に応じて色をつけていた(スタッフの手動管理)
- 月末締でその月の実績に応じて報酬の支払いが行われていた
- スタッフ毎の予約実績については社員数名が一週間程度かけて目視で実績の整合性を確認し、スプレッドシートで請求書や明細書に反映していた
- 目視での確認は時間と手間がかかりすぎ、ミスも多いので何とかして効率化させたかった
求めるもの
- 毎月の実績管理〜請求書の管理までを自動化させたい
- 予約管理自体はスプレッドシートを継続利用し、さらに言えば予約取得方法などUIに関わる部分はなるべく変えたくない
- 予約管理については施術メニューを入力したら色が自動で塗られるようにしたい
- 時折メニュー外にある項目を現金やカードで支払いいただくことがあり、その金額も含めた1日の売り上げ実績を見られるようにしたい
- スプレッドシートで管理している施設以外に、Googleカレンダーで予約を管理している施設もあるので、そちらからも同様に実績を取得できるようにしたい
構築していく中で大変だったこと
- スタッフ毎の施術報酬が異なる(経験年数等による違い)
- スタッフ毎で行く施設が異なる
- スプレッドシートで管理している施設において、営業曜日や営業時間が異なる
こういった中でどこまでを処理としてまとめて、どこまでを個別にプログラミングしていくのか、関数利用だけでなくクラスの利用も含めた方が楽になるのかといった考えを持って進めました。
作成したもの
スタッフ・施設をまとめた基本情報が掲載されたスプレッドシートファイル
予約管理ファイル(こちらは年毎に管理できるように作成)
実績管理ファイル
請求書・明細書管理ファイル
→こちらについては現状、実績の取得が煩雑かしている関係で要修正な状況。
スタッフ毎、施設毎、店舗ごとの実績がうまく纏まれば自動化の最終段階を修正できる。
ここの自動化まで済むとほぼノータッチで実行可能になる。
作成したものをスタッフ毎個別に確認できる管理用ファイル
→こちらはスプレッドシートを個別に作成し、アクセス権限を分けることと、実績データをimportrange関数で閲覧専用にしてみせることで入力状況と、実際の実績取得状況の誤差をなくすことにつながっている。
上記を作成して、それぞれにGASを組んでトリガーにしています。
プログラム全体の考え方
- 起動時に実行すべき処理、編集時に実行すべき処理、それ以外の定期実行すべき処理を分ける
- 月や年が変わったとしてもアップデート処理が最小限で済むようにプログラムを組む
- 特にGoogleカレンダーでは編集があると変更履歴が取れないので、毎日ログを取れるようにプログラムを組む
まとめ
Google apps scriptとスプレッドシートを活用すれば予約・実績・請求書発行までの業務を自動化できます。
さらにGoogleカレンダーとの連携や、情報が確定したらPDF処理の追加といったこともできるようにな理ます。
GASの良いところは環境構築の手間がいらないところ、ブラウザ上で動かすことができるところだと思っているのでプログラミング初学者こそGASに取り組んでいって欲しいです。