人事・労務システムのデータを自動で取り出すには?APIの基本と、つなぐ前に確かめる3つの壁(サンプル付き)
勤怠や人事のシステムから、毎日・毎月のデータを手でダウンロードしている担当者に向けた記事です。システムのデータを自動で取り出す方法は、APIだけではありません。取り出し方の選び方、つなぐ前にぶつかる壁、取り出したあとで困らないための置き方を、SmartHRのお試しの環境で実際に動かして確かめた結果とあわせてまとめました。つないだ時点は、ゴールではなくスタート地点です。
この記事で分かること
- データの取り出し方の3つ(API・アドオン・CSV)と選び方
- APIで押さえる3つのこと(鍵・権限・回数)
- 主要な人事・労務システムのAPIの公開状況と、無料で試せる環境
- つなぐ前の3つの壁(権限・IPの制限・時間帯と回数)
- 取るところでは加工しない理由と、スプレッドシートの落とし穴
- APIとCSVの両方で動く、Googleのスプレッドシートのサンプル
取り出し方は3つある
システムからデータを自動で取り出す方法は、大きく3つです。APIが一番きれいに見えますが、会社の事情によっては、ほかの方法のほうが早く、止まりにくいこともあります。
| 方法 | しくみ | 向いている場面 |
|---|---|---|
| API | システムの決まった窓口に問い合わせ、データを受け取る | 鍵(アクセストークン)を発行でき、IPの制限がない、または外せる |
| アドオン・コネクタ | スプレッドシートやブラウザの拡張機能が、代わりにデータを取ってくる | 製品向けのアドオンがあり、APIの鍵を人事側で出しにくい |
| CSVの書き出し | システムから書き出したファイルを、決まったフォルダに置いて取り込む | APIがない、使えない。まず小さく始めたい |
労務の現場から
社内のセキュリティの決まりで、APIが使えない会社もあります。その場合でも、あきらめる必要はありません。ブラウザの拡張機能で勤怠システムから書き出し、決まったフォルダ(GoogleドライブやSharePoint)に置いて、そこから後ろの処理を自動で動かす、という組み方もあります。APIでなくても、毎日のダウンロードと貼り付けはなくせます。
注意APIでつなぐのが心配なら、まずはCSVの書き出しだけを自動にする形で十分です。決まった時間に書き出し、決まったフォルダに置く。これだけでも、毎日のダウンロードと貼り付けがなくなります。
APIで押さえる3つのこと
API(エー・ピー・アイ)は、システムが用意している「データの受け渡しの窓口」です。手紙のやり取りにたとえると、次のような流れになります。
- 依頼を書く「従業員の一覧をください」のように、欲しいものを決まった書き方(URL)で書きます。
- 鍵を添えて窓口に出す窓口の扉には鍵がかかっています。依頼には、システムで発行した鍵(アクセストークン)を必ず添えます。
- 窓口が鍵を確かめて返す正しい鍵なら「どうぞ」とデータが返ってきます。鍵がないときや違うときは、断られます。
窓口はインターネットの上にあるので、依頼そのものはだれでも出せてしまいます。だからこそ、鍵を持っている人の依頼にだけ答える仕組みになっています。担当者が押さえるのは、次の3つです。
- 鍵: 問い合わせるときに添える文字列(アクセストークン)です。システムの管理画面で発行します。鍵を持っている人は、だれでもデータを取れます。
- 権限: 鍵ごとに、見られるデータや項目が決まります。発行するときに、必要なものだけに絞ります。
- 回数: 1秒・1時間あたりの問い合わせの回数に上限があります。超えると、しばらく断られます。
主要なシステムのAPI
主な人事・労務システムのAPIの状況を、各社の公式のページでまとめました(2026年10月に確かめた内容です。条件は変わることがあるので、使う前に公式で確かめてください)。
| 製品 | 鍵の出し方 | 気をつけること |
|---|---|---|
| SmartHR | 管理者が設定の「外部システム連携」で発行。契約していれば無料 | 1時間5,000回・1秒10回まで。鍵ごとに見られる項目を設定できる |
| freee人事労務 | 開発者向けのページでアプリを作り、認可して鍵を受け取る | しくみがほかより少し複雑(OAuth)。開発用のテスト事業所を無料で作れる |
| カオナビ | 管理画面の「公開API v2 情報」に出る、Consumer KeyとConsumer Secretを使う | ほかのシステムとの連携でも、この2つを使う |
| ジンジャー | 導入企業に公開。自社で設計・開発する | 従業員の情報と、勤務の記録(日締め・月締め)が取れる |
| KING OF TIME | サポートセンターに問い合わせる | 8:30〜10:00と17:30〜18:30は、打刻と鍵の操作以外は使えない。1秒あけて1件ずつ |
| ジョブカン勤怠管理 | 有料プランの契約者が申請し、全権の管理者が発行 | 使い方や連携の作り方はサポートの対象外 |
| HRMOS勤怠 | システムの設定の鍵(Secret Key)を使う | 仕様書が公開されている |
| マネーフォワード クラウド勤怠Plus | 従業員の設定で公開APIを使えるようにし、マイページで発行 | 鍵の期限は1か月と1日。勤務の記録は1回31日分・50人まで |
| TeamSpirit | Salesforceの上で動くので、Salesforceの権限の設定がからむ | Googleのスプレッドシートは、Salesforceのコネクタで取れる場合がある(Workspaceの管理者の許可が要る) |
出典: SmartHR API概要、freee Developers Community、ジンジャーAPI、KING OF TIME WebAPI、ジョブカン「API連携・その他連携が可能なサービス一覧」、HRMOS勤怠「APIは利用可能?」、マネーフォワード クラウド勤怠Plus 公開API 仕様、スプレッドシートから Salesforce を利用できるようにする、「カオナビ」の連携設定方法(マネーフォワード クラウド給与)。
契約の前でも試せる環境がある
いくつかの製品には、本番のデータに触れずに、架空のデータでAPIを試せる環境があります。SmartHRのAPIサンドボックスは、SmartHRを契約していなくても無料で申し込めます。この記事のサンプルは、ここで動かしました。今回申し込んだ環境には、最初から架空の従業員が30人入っていて、APIで従業員を足したり、取り出したりできました(データは予告なく消されることがあります)。freee人事労務も、開発用のテスト事業所を無料で作れます(90日以上使わないと消えます。開発用テスト環境について)。
サンドボックスでは、APIだけでなく管理画面も本番と同じように触れます。鍵を発行する画面や、項目ごとの権限の選び方も、架空のデータで試せます。システムを選ぶ段階でも、こうした環境で「どんな項目を、どんな形で取り出せるか」を見ておくと、入れたあとに自動にできる範囲が見えます。
つなぐ前の3つの壁
APIが公開されていても、すぐにつなげるとは限りません。つなぐ前に、次の3つを確かめます。
1. 鍵を出す権限
APIの鍵を出せるのは、システムの管理者です。人事・労務のシステムなら、ふつうは人事の担当者が管理者の権限を持っているので、自分で発行できます。会社によっては、管理者の権限を責任者などに絞っていることがあります。その場合は、発行を頼みます。どの画面で、どんな鍵を出してほしいかを具体的に書いて頼むと、話が早く進みます。
SmartHRの場合に、頼むときに書くことの例です。
- 発行する場所: 「共通設定」→「外部システム連携」→「アクセストークン」→「新規発行」
- 鍵の名前: 何に使う鍵か分かる名前(例: 従業員の一覧の取り込み)
- 見られる項目: 取り込みに使う項目だけ(例: 社員番号・氏名・入社日・雇用形態)を「参照」にする。「更新」は付けない
2. IPアドレスの制限
システムによっては、鍵を使える接続元のIPアドレスを登録する決まりがあります。たとえばfreee勤怠管理Plus(KING OF TIMEと同じしくみ)は、鍵を発行するときにIPアドレスの登録が必須です(freeeヘルプ)。GoogleのApps Scriptからの問い合わせは、Googleが公開している共有のIPの範囲から送られます(URL Fetch Service)。ほかの会社のスクリプトと同じ範囲なので、自社だけの接続元として登録することはできません。IPの制限が外せないシステムは、CSVの取り込みか、製品の公式の連携を使います。
3. 時間帯と回数
KING OF TIMEは、朝の8:30〜10:00と夕方の17:30〜18:30は、打刻と鍵の操作以外のAPIを使えません。毎朝の取り込みは、この時間を避けて組みます。SmartHRは、1つの鍵で1時間に5,000回・1秒に10回までです。従業員の一覧は1回に100件まで取れるので、数百人の会社でも、毎朝の取り込みで上限に届くことはまずありません。
取るところでは加工しない
労務の現場から
APIで取るところでは、加工はしません。取りながら計算したり、並べ替えたりすると、止まったときに、APIのエラー(仕様の変更を含む)なのか、後ろの処理の問題なのかが分からなくなるからです。取ったものはそのまま置き、加工は別の処理にします。
この記事のサンプルも、この考え方で作っています。取ったデータは「生データ」のシートに1件1行で置き、そこから一覧を作る処理は別にしています。取り込みのたびに、日時・件数・結果・エラーの内容を「取得の記録」に残すので、止まった日にどこで止まったかがすぐ分かります。件数が前回から大きく変わったときも、担当者に知らせます。権限が変わって一部しか取れていない、という変化に気づくためです。
スプレッドシートが勝手に加工する
サンプルを作る途中で、取るところでは加工しないつもりでも、スプレッドシートの側で値が変わる、ということが起きました。CSVの社員番号「1001」は数字に、「9:00」は時刻に、APIで取った社員番号「00025」は「25」に変わっていました。先頭の0が消えると、ほかのデータと社員番号で突き合わせられなくなります。サンプルでは、生データと一覧のセルを「書式なしの文字」にしてから値を置くように直しました。自分で作るときも、取り込み先のセルの書式を先に文字にしておきます。
鍵で見られる項目を絞る
SmartHRのサンドボックスで、項目を絞らない鍵で従業員のデータを取ると、1人あたり約150の項目が返ってきました。どんな項目があるかは、公開されているSmartHRのAPI仕様書で確かめられます。氏名や入社日のほかに、口座や保険の番号、障害の区分も含まれます。鍵で見られる項目は、すべて生データに入ります。
SmartHRでは、鍵を発行・編集する画面で、従業員の項目ごとに「参照」と「更新」を選べます。取り込みに使う項目だけを「参照」にして、ほかは外します。会社が独自に足した項目(カスタム項目)は、標準の項目とは別の欄で許可を選ぶので、自社で何を足しているかを先に把握しておきます。あわせて、生データのシートを共有する範囲も最小限にします。
つないだら、そこがスタート地点
データが自動で取れるようになっても、それだけで仕事が楽になるわけではありません。つなぐのは第一段階で、そのデータで何をしたいかに合わせて、後ろの処理を作るほうが手間がかかります。先に「取ったデータで何をするか」を決めてから、取る項目と時間を決めます。
取ったデータの使い道は、この業務の自動化のカテゴリの各論で紹介しています。勤怠の締めの催促や、締めたあとの残業・有給のアラートは、ここで取り込んだデータをそのまま入力に使えます。
詳しく読む勤怠の締めの催促は自動にできる?期限の決め方と、本人・上司へ段階的に送る仕組み(サンプル付き) 詳しく読む残業と有給のアラートは自動にできる?確定した勤怠で36協定の回数・80時間超・年5日を知らせる仕組み(サンプル付き)サンプルの使い方
サンプル: データの取り込み(Googleのスプレッドシート)
APIの取り込み(鍵を使う形。SmartHRのAPIで確かめています)と、CSVの取り込み(どのシステムでも使える形)の2つが入っています。コピーすると、Apps Scriptも一緒にコピーされます。
- 準備するコピーしたスプレッドシートのメニュー「データの取り込み」→「① 準備」を押します。最初に権限の承認を求められます。
- 取り込む方法を選ぶ「設定」シートで、APIとCSVのどちらを使うかを選びます。APIなら窓口のURL(SmartHRの従業員の一覧は「/api/v1/crews」)を、CSVなら置くフォルダのIDを入れます。
- 鍵を登録するAPIを使うときは、メニュー「② 鍵を登録する」で鍵を貼ります。鍵はシートには書かず、スクリプトの中にだけ保存します。
- 試してから毎朝にする「③ 今すぐ取り込む」で試し、「取得の記録」と「生データ」を確かめます。問題なければ「毎朝の自動の取り込みを始める」を押します。
失敗したときは、担当者が次にやることが分かる説明を「取得の記録」に残し、メールで知らせます。たとえば鍵が無効なら「鍵を発行し直して登録し直す」、IPの制限で断られたら「CSVの取り込みに切り替える」と書きます。回数の上限やシステムの一時的な不調のときは、時間をおいて自動でやり直します。
Microsoftの環境で組む場合
Microsoft 365の会社なら、取り込み先をSharePointかOneDriveのフォルダにし、後ろの処理をPower Automateで組みます。この記事の冒頭の例のように、書き出したファイルを決まったフォルダに置けば、あとはPower Automateが拾って処理できます。置き場所はGoogleドライブでもSharePointでも、考え方は同じです。どちらの場合も、取り込みと加工を分け、取得の記録を残しておくと、止まったときに慌てずに済みます。
自社のシステムに合わせて取り込みを作りたい、という相談は、お問い合わせから「仕組みづくりの相談」を選んで送ってください。ほかの会社にも役立ちそうな内容は、記事で取り上げます。