freeeの開発情報ポータルサイト

freeeの新しく公開されたAPIを使って、非エンジニアが音声で勤怠打刻をしてみました!

こんにちは、freee株式会社のgokiです。

私は2017年の新卒としてビジネス職で入社し、現在はProduct Value Boosterという、営業チームや導入支援チームに自社プロダクトの価値を咀嚼してお伝えするお仕事をしています。

非エンジニアではあるのですが、いろんな業務改善ツールを作ることが好きで、趣味でいろいろ作ったりしています。

IFTTTを使って音声で勤怠打刻をしたかった理由

皆さんは、勤められている会社で勤怠って付けていますか?

ほとんどの人が”YES”だと思うのですが、あれってなかなか面倒だったりしますよね。

freeeでは、会計や人事労務管理はすべて自社のサービスを使用しているのですが、クラウドとはいえ、勤怠のためにPCをつけて、ログインして打刻、という作業時間がもったいないなぁ、と感じていました。

人事労務freeeがタイムレコーダー(打刻)のAPIを公開!

そんな勤怠打刻の悩みを悶々と抱えていた矢先、なんと人事労務freeeがタイムレコーダー(打刻)のAPIを公開しました)!

人事労務freeeのタイムレコーダー(打刻)APIのリファレンスの画像

嬉しーーーーー!!!

タイムレコーダー(打刻)APIについて

指定した従業員のタイムレコーダー(打刻)情報を 登録 / 取得する ことができます。 登録の場合は、webの画面やアプリと同じく出勤 / 退勤 / 休憩開始 / 休憩終了 の登録ができます。 このAPIを用いて、自社のツール・ICカードや生体認証に対応した打刻機からAPIを呼び出すことで出退勤の管理を自動化することができます。

※タイムレコーダー(打刻)機能は、ビジネスプランのみ有効です。 https://developer.freee.co.jp/docs/hr 人事労務API 概要 | freee Developers Community

これで色んな方法で打刻ができます!

やっぱりやるなら音声入力

実は前回、Google HomeとIFTTTを使って、音声で経費の仕訳を作成するという記事を書かせていただきました。

developers.freee.co.jp

大変ご好評もいただいたこともあり、今回の打刻APIの活用アイデアを考えたときに、私は真っ先に音声入力が思い浮かびました。

前回のノウハウもありますし、何より音声入力ってやっぱり楽ですしね。

というわけで、前振りが長くなってしまいましたが、

「OK Google!出勤したよ!」と言ったら、自動的に人事労務freeeで出勤を記録する仕組みを作りたいと思います。

基本的な仕組み

仕組みとしては、前回の音声仕訳と同じく「①Google Assistant →②Google スプレッドシート→③freee」という順番でデータを飛ばそうと思います。

①と②の間をIFTTTで、②と③の間はGoogleのスクリプト“Google Apps Script(略称GAS)”を使用して、freeeが公開したAPIを叩くという方法です。

下準備で必要なもの

  • Googleアカウント
  • Google Assistantアプリのスマホへのインストール
  • IFTTTアカウント
  • 人事労務freeeのビジネスプランのアカウント

IFTTTの設定

準備が終わったら、あとはIFTTTの設定です。IFTTTにログインしたら「New Applet」よりAppletの新規作成を行います。

IFTTTのNew Applet画面のスクリーンショット

Appletのトリガーであるthisの部分は次のように設定します。

service
Google Assistant
trigger
Say a simple phrase

最後のtrigger fieldsについてですが、今回は、「出勤したよ」と喋りかけたら自動で打刻の処理をしたいので、次のように設定しました

What do you want to say?
出勤したよ
What's another way to say it? (optional)
出勤しました
And another way? (optional)
出勤するよ
What do you want the Assistant to say in response?
今日も一日頑張ってください

IFTTTの設定クリーンショット

これで、「出勤したよ」と話しかけたことをトリガーにアクションを実施できるようになりました。

ちなみに、このトリガー後のGoogle Assistantからのレスポンスは「今日も一日頑張ってください」とし、朝からテンションが上がるように設定しました。

続いて、thatにあたるアクション部分を作成します。

service
Google Sheet
action
Update cell in spreadsheet

を選択します。

action fieldsは、「音声打刻」というスプレッドシートを指定し、そのシートのA1セルを出力先に指定しました。

Spreadsheet name
音声打刻
Which cell?
A1
Value
clock_in

IFTTTの設定のスクリーンショット

また、出力先への値としては「clock_in」を指定しています。

これは、freeeの打刻APIでリクエストを送るときのtype(出勤・休憩開始・休憩終了・退勤)を指定する必要があるので、今回は出勤を指定する「clock_in」を入れています。

APIにて操作可能な打刻種別は以下のとおりです

clock_in
出勤
break_begin
休憩開始
break_end
休憩開始
clock_out
退勤

あとは同じ要領で休憩や退勤も作成

ここまでで、Google Assistantに話しかければ、Googleスプレッドシートに出勤情報を飛ばすことができました。

同じ要領で休憩開始、休憩終了、退勤なども作成すれば、IFTTT側の準備は終了です。

「①Google Home →②Google スプレッドシート→③freee」のうち、①→②が完成しましたので、

次からは②スプレッドシートから③freeeへの入力について説明します。

Google スプレッドシートとfreeeの連携の仕方

前回の記事でも書きましたが、Google スプレッドシートとfreeeの連携は意外と簡単です。

実はfreeeのヘルプページにはスプレッドシートからAPIを送信する用のサンプルシートがあります。

support.freee.co.jp

ただし、上記のサンプルシートについては、人事労務freeeではなく、会計freeeの取引登録APIなので、そのまま使うことはできません。

しかし、これを使えば、OAuth2認証で必要なアクセストークンなどを簡単に取得することができるうえ、POSTリクエスト(APIの叩く操作)もコードを数行書き換えるだけですぐ終わるので、めちゃくちゃ楽です。

Googleスプレッドシートの変更点

まず、サンプルシートをIFTTTの値出力先にするため、名前を「音声打刻」に変更します。

IFTTTからを値を受け取るシートを作成し、連携認証をマニュアルに従って行えば準備完了です。

Google Assistantから休憩開始を喋りかけてみて、A1セルにbreak_beginが入力されれば成功です。

Googleスプレッドシートのスクリーンショット

あとは、スプレッドシートの「ツール」→「スクリプトエディタ」から少しコードを書き換えるだけで完成です。

コードを変更した箇所

今回は、会計freeeの明細POSTのコードをコピーして、下記の部分だけ変更を加えました。

変数のrequestUrl を "https://api.freee.co.jp/hr/api/v1/employees/従業員ID/time_clocks"に変更

POSTする内容の記述を下記のように変更

  var d = new Date();
  var postdate = Utilities.formatDate( d , "JST" , "yyyy-MM-dd" ); 
  var gSheet = ss.getSheetByName( "IFTTT" );
  var posttype = gSheet.getRange( 1 , 1 ).getValue();

  var requestBody = 
        {
          "company_id" : 事業所ID,
          "type" : posttype,
          "base_date" : postdate,         
        };

打刻の場合はリクエストに必要な情報が少ないので、とってもシンプルかと思います。 説明するまでもないかもしれませんが、リクエストのtypeの値をIFTTTから出力されるA1セルの値にしています。

事業所IDと従業員IDの取得について

事業所IDと従業員IDについては、もともとサンプルファイルには事業所IDの取得リクエストができるようになっています。

さらに従業員IDについても、「ログインユーザーの取得」という人事労務freeeのAPIを叩けば分かるのですが、

そのコードを書くのがめんどくさいので、人事労務freeeにログインして「従業員情報」のリンクのURLが

https://p.secure.freee.co.jp/employees#従業員ID/年/月となっているので、そこで調べてコードに直打ちしています。

準備完了!!

これで準備が整いました、最後にスクリプトエディタのトリガー設定にて、シートが更新されると打刻のスクリプトが動くように設定しておけば完了です!

トリガー設定のスクリーンショット

音声打刻の使用感

作成してからは、これで打刻を行うようにしていますが、とても快適です!

「OK Google!出勤したよ!」で終わるので、とっても時間短縮。

あとは、Google Assistantが「いってらっしゃい、今日も頑張って」と返してくれるのも心がほっこりします。

Googleアシスタント(アプリ)のスクリーンショット
自分が設定したのだけど、応援してくれるのがうれしい...

もっとイメージがわくように、動画もいつか撮影して載せたいと思いますが、今回は写真ですみません。

人事労務freeeのビジネスプランを使っている方は、ぜひぜひ試してみてくださいね!

打刻APIを使えばいろんな連携ができそう。

私は技術にめちゃくちゃ詳しいわけではないのですが、今回のAPI公開で

GitHubやSlackから勤怠打刻したり、生体認証で勤怠を打刻したりといったことができるようになりそうですね!

個人的に音声については目が不自由だったりする方には最高の勤怠ソリューションかな?とか思いました。

もし、このようなテクノロジーを使って、いろんなビジネスの課題を解決することに興味がある方は、ぜひぜひfreeeという会社のこともチェックしてみてください~

jobs.freee.co.jp