ちょっと話題の記事

SmartHR APIとGoogle Apps Scriptを使って社内向け社員一覧の取得を自動化する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

社員一覧のマスターをどこに置くか

社内の人事情報ってどこで管理していますか?中小企業は多くの場合、部門毎にエクセルとかスプレットシートで肩書きや連絡先を管理していたり、人事や労務担当が別に住所などの詳細なデータを管理していたりしませんでしょうか。その結果、いろんな部署で手作業による人事情報の更新がされたりされてなかったりして、どれが最新か、誰が管理に責任を持つのか、誰にどこまで見せてよいのか、などなど、色々課題があったりします。

SmartHRのデータをマスターとする

今回当社では、SmartHRの情報を1次情報とすると改めて決めました。これは、入社時に全て正確な情報を漏れなく記入することと、入社後に部署や肩書きが変わった際にも、必ず人事労務チームがメンテナンスする役割を持つことで、全社員が常に最新で正確な情報にアクセスできることを保証することです。ここで一つ課題が出てきます。人事労務情報は社員の個人情報そのものなので、エクスポートして丸っと共有することはできません。かといって、毎月手作業で社内共有用のリストを手作業で更新するのも嫌です。そこで、APIを使うことにしました。

Google Apps Script

当社では、Google Workspaceが全社導入されていて、社員のみが閲覧できるドキュメントを簡単に設定することができます。そこで、Google スプレッドシート内でGAS(Google Apps Script)を活用して、SmartHR APIから取得した社員リストを毎日自動でシートに反映するコードを書いてみました。

Google スプレッドシート

スプレッドシートのメニューから、「ツール」 > 「スクリプトエディタ」を選択して、GASファイル内のメソッドを記述します。

Employee.gs

実際に動くコードはこちらです。(別途プロパティ設定が必要)

プロパティ情報

個別情報は事前にGAS内のプロパティに設定しました。GASの新しいエディタでは、GUIによる設定ができなくなっているようですので、一時的に旧バージョンのエディタに戻してから設定しています。(コードからも設定できますが、コードから分離したかった)

トリガー起動

毎日や毎週の決まった時間に起動することができます。GASのメニューからトリガーを選んでどのタイミングでメソッドを起動するか指定します。今回は、毎日深夜に起動するようにしました。

SmartHRの設定

SmartHRのAPIキー(アクセストークン)を発行するためには、SmartHRの管理者権限を使って、APIキーに対応する認可リストを編集します。実はここが最も難易度が高いと思っていて、SmartHRには過去を含む全社員の個人情報が満載なので、社内のエンジニアに気軽に管理者権限を渡せないのです。かといって、人事労務チームに認可リスト作成をお願いするのは気が引ける。今回は、会長という特権を活かして、管理者権限を使ってAPIキー発行し、必要最低限の認可リストを作成しました。会長がコードを書けば良いのです。

管理者メニューから「外部システム連携」を選択して「アクセストークン」を新規発行します。

作成の際に必要になるのが、認可リストです。いくら管理者権限だからといっても、API経由で何でも取れてしまってはリスクが高いので、必要最小限の属性のみを指定しました。新規発行されたAPIキーは一度表示されると二度と見えなくなりますので、1Passwordなどの機密情報管理ソフトウェアなどを使って保管しておいてください。

社員一覧作成の工夫

社内向けの社員一覧を作成するにあたって工夫した点をいくつかご紹介したいと思います。

  • ビジネスネームを優先的に表示する。(本名の掲載を望まない人も多い)
  • 退職者は表示しない。
  • 入社前の社員は表示しない。(入社前にSmartHRに登録されていることが多い)
  • 個人のメールアドレスは表示しない。(入社前に連絡用の個人アドレスが登録されていることが多い)
  • 部署名やチーム名を表示する。(特定の部署やチームをフィルタできるようにした)

まとめ

今回は、今まで社内で手作業で更新されていたり、様々な部署で似たようなことをやっている作業について、情報の一元化と更新の役割を明確にし、APIを通じた情報収集と適切なフィルタ処理を加えて、処理を自動化しました。毎週5分ぐらいの作業だったのかもしれませんが、こういった細かい社内業務をできるだけコンピュータに任せようとすることで、同時に業務フローや役割が明確になり、全社的な生産性が上がるのではと思っています。今後も、こういった細かい社内プロセスの整備と、省力化や自動化に注力していきたいですね。会長だしさ。