こんにちは。
インターンの桑原です。

以前更新したこちらの記事の冒頭に、知らないことばかりで大変だという弱音を吐きだしてしまったのですが、やっと最近成長が感じられた(?)ので、共有してみようと思います。

有休管理のアップデート

数ある課題の中で、今回は有休管理のアップデートについてお話します。

まず前提として、わたしはプログラミングの類とは距離を置いて生きてきました。
まさしくド文系です。

せいぜいインターネットやアプリ、アップル製品のガジェットが好きというレベルのITリテラシー。

その中でまず言い渡されたこの課題は、属人化したエクセルでの有休管理を止め、さらに管理を楽にしてほしいというものでした。

ここからわたしの課題解決への長い旅がスタートしたのです……。

結論から言うと、なんとか完成しました!

所要時間はなんと……、3週間
長すぎ・遅すぎというスタートダッシュ……。

以下に今回の課題解決のアプローチと反省点をまとめ、今後に繋げていこう思います。

解決へのアプローチ

課題解決のために、まず現在の問題点を把握します。

  1. エクセル上での管理
  2. 有休に関わる法律の規定への考慮
  3. 手動かつ手入力
  4. 日数の表示方法の不明確さ

エクセルは扱いやすい反面、ファイル所有者のみが編集できるため、共有するときに不便です。

さらに働き方改革法案の可決により、2019年4月から年5日の有休消化を社員に促す必要があります。

また、管理者が手を動かす部分がとても多く、記入時間がもったいなかったです。

そして 当社は1時間単位での有休消化可能です。
(これは当社のストロングポイント!)

そうなると、有休消化時間を日数に変換する必要があります。
例えば3時間取得した人は、0.375日取得したということになるのです。
この表示……なんともわかりづらいです……。

ですので、これを踏まえて、

  • 見やすい
  • わかりやすい
  • 扱いやすい

の3点が叶う有休管理方法を見出そうと出発しました。

最適ツールの選択

まずここが一番の反省点!
この過程をわたしは時間をかけすぎてしまいました。

わたしの中の惑わしポイントは2つ。

  • クラウドサービスの絶対的信頼度
  • 関数に対する嫌悪感

クラウドサービスの良い点は一般的な会社が扱いやすいプログラムのもと、専門的な知識がなくとも、非常に簡単に操作できることです。

しかしながら、当然、そのプログラムにそぐわない部分も会社ごとにあるのではないでしょうか。
まさしく当社は現状のクラウドサービスでは対応しきれない部分が多かったのです。

クラウドサービスの絶対的信頼感を頼りにするも、なかなかいい解決策が見つからず、紆余曲折を繰り返すこと、早2週間強……。

埒が明かなくなったときに、上司からの一言。

何となく目途がたたないので、12月分のデータを入れたいですし、一旦、スプレッドシート化を進めてもらっていいですか?

筆者はそのようにお尻を叩かれ、もう頭も回らず、関数も嫌すぎるし、エクセルにあった表をただGoogleスプレッドシートにペーストして、ギブアップをしかけました……。
(これを提出してみたら、こうじゃないと優しいお叱りをいただきました。当たり前です。だって何も変わっていませんから……)

スプレッドシートならば、Gsuitを利用する当社において、課題①の共有の手間が省けるし、クラウドサービスの欠点である好き勝手作れるという点で優れています。

スプレッドシートは神だ!!!!!!!!!

と心を入れ替え、既存の表を改良すべく、第2の旅「関数嫌いを克服せよ」が始まりました。

改良版有休管理表完成への道程

Googleスプレッドシートに存在する旧バージョンの有休管理表を眺めながら、

「自分が毎月これを管理するとしたら何がめんどくさいかな~」

と考えてみました。

有休管理の一般的なプロセスとして、

  1. 社員の有休申請を上長が承認する
  2. 社員が実際に有休消化する
  3. 消化分を月末に管理する

こういった流れです。

しかし、こんなケースもあるでしょう。

  • 有休申請したものの、急に仕事が入ったため、実際は休めなかった
  • 病欠の分を有休でカバーしたい

ですので、申請数と消化時間が比例することはあまりありません。

消化時間のチェックがどうしたら簡単になるかと考えた末、

  • 各社員が記入する勤怠管理表を編集し、申告した有休時間数を参照しやすくする
  • システム上の結果が記入される表で有休申請時間数のチェックが見やすいようにする

この2つから取り掛かることにしました。

これを叶えるために、わたしはIF関数という強敵に立ち向かうことに……。

Google先生に尋ねまくり、関数式との長い戦いを強いられましたが、やがてだんだんと理解してきた頃にはなんとか形になってきました。

関数ってすごい!
という関数の偉大さに気づき始め、なんでも条件を振り分けて関数化したい衝動に駆られるようになりました。

この調子で異なる関数もなんとか駆使しながら、課題②を「規定消化時間をクリアしていなかったらセルの色が変わるように設定」し、課題④については「時間管理を主に割り算関数で残日数と時間が表示」されるようにすることでクリアしました。

後は課題③の自動化!
特に初期の新規表作成についてです。

いちいちコピペして、新しい数字入れるの面倒やな~

そこでスプレッドシートにはプログラミング機能(Google App Script(GAS))があることを思い出し、表の作成を自動化してしまおうと思い立ったのです!

試行錯誤の末、ボタン1つで面倒なことが終わるように実装することができました。

これでなんとか課題をすべてクリアし、求めていた有給休暇管理表のアップデート完了!

まとめ

今回課題に取り組む中で、

  • 関数のすごさ
  • GASの面白さ

を発見しました!

残念ながら時間はかかってしまったものの、未経験のわたしにこのような仕事を任してくださったフルエナジーの懐の大きさには感謝しきれません。

まだ改良点はありますが、これに引き続きほかのバックオフィス業務もアップデートできるように頑張ろうと思います!