ENECHANGE Developer Blog

ENECHANGE開発者ブログ

GAS / Slack連携を用いて、ランチ手当申請フローを改善した話

こんにちは、エネルギークラウド事業部・石橋 (rubita_isi)、エネチェンジ事業部・小野 (yuto-ono-ene)です。

私たちは普段は別々の部署で働いていますが、この度全社横断的な業務改善のトライアルとして、GoogleWorkSpace上のランチ手当申請フローをGASやSlack連携などを用いて効率化しました。

その取り組みについて、本記事で紹介させてください。

ENECHANGEランチ手当のマスコット・Qちゃん

目次

ランチ手当とは?

ただ、読者の皆さまは

「そもそもランチ手当とはなんぞや?」

という疑問をお持ちだと思いますので、まずはENECHANGEのランチ手当制度を紹介いたします。

ENECHANGEでは、首都圏在住者の場合は週4日のリモートワークを基本としていますが、チームビルディングを円滑に行うため原則週1日は出社することになっています*1

そこで、メンバー間のコミュニケーションを促進するためにランチ手当という制度を導入し、昼食代を1回1,000円(税抜)・月4回を上限として支給する取り組みを行っています。

もう少し細かくランチ手当の利用条件を記載すると以下のようになります。

ランチ手当の利用条件

  • 上限額は1人1回1,000円(税抜)まで
  • 月最大4回まで利用可能
  • 1回あたりの参加人数は2-4人の範囲内
  • 同月内のメンバーの重複は不可

従来のランチ手当・運用フロー

従来のランチ手当の申請・承認フロー、及びフォームの更新フローは以下のようになっていました。

申請・承認フロー

ENECHNAGEではfreee会計GoogleWorkspaceを利用しているため、ランチ手当を導入するにあたっては、以下の流れで申請を行う仕組みとなっていました。

  1. 申請者:freee会計で経費申請を実施
  2. 申請者:Googleフォームで申請を行い、freeeのリンクを添付
  3. 承認者:回答が連携されるスプレッドシートを見て申請内容を確認
  4. 承認者:問題なければfreee会計の申請を承認

従来の申請フロー

フォーム更新フロー

ランチ手当の申請を行うGoogleフォームでは、参加者の名前を登録します(2-4名)。

参加者名の選択肢一覧は、月2回更新される従業員名簿を元に、担当者が手動で追加・削除していました。

  1. 担当者A:従業員名簿(スプレッドシート)の更新(月2回)
  2. 担当者B:従業員名簿をもとにGoogleフォームの参加者の選択肢一覧を更新(手動)

従来のフォーム更新フロー

従来の運用フローの問題点

以上が従来の運用フローですが、いくつか問題があって業務が大変だという声が、バックオフィスチームから上がっていました。

問題を要約すると、以下の4点になります。

  1. 作業者:フォームの更新作業が煩雑
  2. 申請者:フォームのプルダウンから参加者を探すのが大変
  3. 承認者:該当月の申請内容を確認するのが大変
  4. 利用者:自分のランチ手当利用状況を忘れてしまう

それぞれ、もう少し詳細に問題点を解説していきます。

1. 作業者:フォームの更新作業が煩雑

  • 参加者名の選択肢一覧の更新を全て手作業で実施していた
  • 毎月の入社 / 退社メンバーの更新をミスなく人力で行うのは困難
  • 最大4人まで申請するので、同じ作業を4回する必要があった

2. 申請者:フォームのプルダウンから参加者を探すのが大変

  • 参加者名の選択肢は部署に関わらず一覧で表示されていた
  • 社員数は200名以上いるため、参加者を選択肢一覧から探すのが大変
  • 社員数は毎月どんどん増加していく(・・!)

3. 承認者:該当月の申請内容を確認するのが大変

  • スプレッドシート上の1つの集計シートに毎月の申請データが全て連携される
  • 上記から該当月のデータを探し、以下をチェックするのが大変だった
    • メンバーの重複がないか?
    • 4回以上行っていないか?

4. 利用者:自分のランチ手当の利用状況を忘れてしまう

  • 申請は一人が代表して行うため、それ以外の利用者は手元で記録を残しておかないと以下の内容を忘れてしまう
    • 今月何回ランチ手当を使ったか?
    • 今月誰とランチに行ったか?
  • 集計先のスプレッドシートを見れば一応わかるが、全員に閲覧権限はつけたくない
  • 上記の状況のため、4回以上申請してしまう人が一定数発生していた

問題に対する解決策

上記の問題を解決するため、私たちは4つの解決方法を実装しました。

  1. フォーム反映をGASで自動化
  2. スプレッドシート改善(QUERY関数など)
  3. Slack bot 開発
  4. Slack Slashコマンドによるリアルタイム問い合わせ

それぞれについて解説していきます。

a. フォーム反映をGASで自動化

解決できる問題

  1. 作業者:フォームの更新作業が煩雑
  2. 申請者:フォームのプルダウンから参加者を探すのが大変
  3. 承認者:該当月の申請内容を確認するのが大変
  4. 利用者:自分のランチ手当の利用状況を忘れてしまう

スプレッドシートからのフォーム反映をGASで自動化

従業員名簿のスプレッドシートの修正が終わったタイミングで反映ボタンを押下することで、Googleフォームにスプレッドシートの内容が自動で反映されるようにしました。

ボタン押下

ローディング画面

更新完了画面

こうすることでフォームの反映作業を簡略化し、ミスが起きない仕組みにしています。

参加者の選択肢一覧を部署 → 氏名の二段階選択に変更

また、フォームを自動更新する際は、先に参加者の部署を選んで、その後に参加者の氏名を選択する構成としました。

所属部署選択画面

氏名選択画面

こうすることで、プルダウンから参加者を選ぶ時に該当者を探す手間を簡略化しました。

また、副次的な効果として、部署情報が追加されたため、部署毎のランチ手当の利用状況や部署間の交流の状況などを簡単に計測できるようになりました。

b. スプレッドシート改善(QUERY関数など)

解決できる問題

  1. 作業者:フォームの更新作業が煩雑
  2. 申請者:フォームのプルダウンから参加者を探すのが大変
  3. 承認者:該当月の申請内容を確認するのが大変
  4. 利用者:自分のランチ手当の利用状況を忘れてしまう

今までの運用方法

フォームから送られてきたデータが、下記の通りスプレッドシートにたまっていきます。

従来の集計シート

このデータをもとに、 COUNTIF関数を使って、誰が何回ランチに行ったのかを集計していたのですが、ここで問題が発生します。

それは、「ランチ手当利用日」が順番に並んでいないということです。

このデータは、フォームが送信された順番に並んでいます。

しかし、ランチを食べたその日に申請する方もいれば、数日後に申請する方もいます。

そのため、利用日の順番がバラバラなのです。

なので、例えば10月にランチに行った回数を取得したければ、

  1. ランチ手当利用日を昇順に並べ替える
  2. COUNTIFの範囲指定が、10月分になるように(9月とか11月が入らないように)調整する
  3. 新たにデータが増えるたびに、1,2の手順を繰り返す

という運用をしていましたが、これでは効率が悪いです。

QUERY関数で、集計の効率UP

そこで、QUERY関数を使って、利用日が10月のデータのみを抽出したシートを作成しました。

新ランチ手当・集計シート

(本当は利用日の右側に氏名などが入っているが、個人情報のため非表示にしてあります)

これにより、データが増えるたびに、いちいち並べ替えたり、COUNTIFの範囲を調整する必要がなくなりました。

これで劇的に集計の効率がUPしました!

また、私は今回初めてQUERY関数について知り、スプレッドシートには色々と便利な関数があるんだなという学びがありました。

人の役に立てて、自分自身の知識も増えて、 Win-Win な取り組みだったなと思います!

c. Slack bot 開発

解決できる問題

  1. 作業者:フォームの更新作業が煩雑
  2. 申請者:フォームのプルダウンから参加者を探すのが大変
  3. 承認者:該当月の申請内容を確認するのが大変
  4. 利用者:自分のランチ手当の利用状況を忘れてしまう

Slack bot で、ランチ手当の上限回数に達した瞬間に自動通知

月のランチ手当上限(4回)に達した方のお名前を自動的に通知するようにしました。

これにより、本人や周りの方が、ランチ手当を使い切ったことに気づくことができます。

Slack botによる通知

「いつの間に!?」とランチbotの通知に反応いただくこともあり、実際にこの仕組みが役立っていることを実感できてうれしいです。

実装の詳細

GASで、Googleフォームが送信されたときに回数をチェックして、上限に達している場合はSlack の Incoming Webhook でメッセージを送るように実装しています。

詳細につきましては、小野 (yuto-ono-ene)の個人ブログで解説予定ですので、乞うご期待!

d. Slack Slashコマンドによるリアルタイム問い合わせ

解決できる問題

  1. 作業者:フォームの更新作業が煩雑
  2. 申請者:フォームのプルダウンから参加者を探すのが大変
  3. 承認者:該当月の申請内容を確認するのが大変
  4. 利用者:自分のランチ手当の利用状況を忘れてしまう

Slack Slashコマンドを実装し、ランチ手当利用状況をリアルタイムに取得

上記のSlack botをさらに活用し、Slashコマンドを実装しました。

具体的にはSlack上で

/lunch [姓] [名] 

とコマンドを入力することで、ランチ手当の利用状況をスプレッドシートからリアルタイムに取得し、Slackに通知できるようにしています。

コマンドを入力

利用状況を通知

こうすることで、ランチ手当利用者はいつでも自分の利用状況を確認できるようになりました。

また、副次的な効果として、他の人の利用状況を事前に確認することもできるため、ランチに誘いやすくなったという声が社内から上がりました。

例)「あの人まだランチ手当が残っているから誘ってみよう!」

実装の詳細

実装の詳細につきましては、石橋 (rubita_isi)の個人ブログで解説していますので、ご興味のある方は是非ご覧ください。

新しいランチ手当のワークフロー

新しいランチ手当のワークフローは以下のようになります。

新ランチ手当・ワークフロー

まとめ

いかがでしたでしょうか?

バックオフィスの抱える課題を、GASやSlack連携などを活用して最小限のコストで解決することができたのではないかと考えています。

この程度のコストであれば今後も本業の開発の傍ら、四半期に一つ程度は全社的な業務改善に取り組んでいけるのではないかと考えています。

読者の皆さまの参考になれば幸いです!

*1:地方在住でフルリモート許可を得ている社員についてはこの限りではありません