こんにちは。CData Software Japanテクニカルサポートエンジニアの菅原です。
今回はCData Syncを使って、クラウド勤怠管理システムKING OF TIMEのデータをMySQLへ複製する方法やAmazon S3へCSV出力する方法を紹介します。
- KING OF TIMEとは?
- 手順(KING OF TIME ⇒ CData Sync ⇒ MySQL)
- 手順(KING OF TIME ⇒ CData Sync ⇒ Amazon S3)
- 終わりに
KING OF TIMEとは?
KING OF TIMEは誰でも簡単に使えるシンプルなUIのクラウド型勤怠管理システムです。
とても充実した機能のAPIを提供しており、企業情報や従業員情報などのマスタデータ操作や日別、月別の勤怠・打刻データを取得できるAPIを提供しています。
https://developer.kingtime.jp/
対応しているAPI一覧は下記の通りです。
Name | 対応API |
---|---|
Administrators | 管理者データの一覧を取得 |
Companies | 企業情報データを取得 |
DailySchedules | 日別スケジュールデータの一覧を取得 |
DailySchedulesCosts | 日別スケジュール費用データの一覧を取得 |
DailyWorkings | 日別勤務データの一覧を取得 |
DailyWorkingsCosts | 日別費用データの一覧を取得 |
DailyWorkingsTimeRecords | 日別打刻データの一覧を取得 |
Divisions | 所属データの一覧を取得 |
Employees | 従業員データの一覧を取得 |
MonthlySchedulesCosts | 指定した年月の月別スケジュール費用データを取得 |
MonthlyWorkings | 指定した年月の月別勤務データを取得 |
MonthlyWorkingsCosts | 指定した年月の月別費用データを取得 |
MonthlyWorkingsHolidayRemained | 指定した年月の残休暇データを取得 |
RequestsOvertimeLimits | 指定した年月の残業上限申請データを取得 |
RequestsOvertimes | 指定した年月の時間外勤務申請データを取得 |
RequestsSchedules | 指定した年月のスケジュール申請データを取得 |
RequestsTimerecords | 指定した年月の打刻申請データを取得 |
WorkingTypes | 雇用区分データの一覧を取得 |
YearlyWorkingsHolidays | 指定した年度にて行った休暇付与、取得を一覧で取得 |
今回はこのAPIを利用して、CData Syncから勤怠データの取得を行ってみたいと思います。
手順(KING OF TIME ⇒ CData Sync ⇒ MySQL)
それでは実際にKING OF TIMEのデータをMySQLに複製する方法を説明します。
KING OF TIMEのWebAPI連携設定
まずはKING OF TIMEのWebAPIを使用できるように設定します。
ホーム画面の左下にある「設定」>「その他」をクリック
設定画面の「その他」タブの「オプション」をクリック
「外部サービス連携」>「KING OF TIME WebAPI連携設定」を「使用する」に設定して、 「登録」をクリックしてください。
登録後にもう一度この画面を表示して「連携設定」をクリック
「新規アクセストークン発行」をクリック
アクセストークン発行画面で【基本情報】・【API権限情報】・【許可IPアドレス】を入力して「登録」をクリック
※補足
登録されたアクセストークンが後ほど必要となるため「編集」をクリック
表示されたアクセストークンをメモしておいてください。
これでKING OF TIMEの設定は終わりです。
CData Syncの設定
次にCData Syncの設定を行います。CData Syncを起動します。
データソースにKING OF TIMEを設定
「接続」タブの「接続の追加」-「データソース」タブの「Add More」をクリック
コネクタをダウンロード画面で「KingOfTime」を検索
「KingOfTime」をクリック
「ダウンロード&インストール」をクリック
インストールが完了するとデータソースに「King Of Time Profile」が表示されます。 「King Of Time Profile」をクリック
- 名前:任意
- プロバイダークラス:System.Data.CDAta.API
- フォーマット設定:プロパティリスト
- Profile Settings:APIKey=KING OF TIMEのアクセストークン
※「APIKey=」も入力してください
「接続のテスト」を行い、接続できたら「変更を保存」をクリック
これでCData SyncとKING OF TIMEの接続ができるようになりました。
同期先にMySQLを設定
次は複製先となるMySQLの設定を行います。
「接続の追加」の「同期先」タブの「MySQL」をクリック
- 名前:任意
- プロバイダークラス:System.Data.CData.MySQL
- Server:サーバー名
- Port:ポート番号
- Database:データベース名
- User:ユーザー名
- Password:パスワード
「接続のテスト」を行い、接続できたら「変更を保存」をクリック
これでCData SyncとMySQLの接続ができるようになりました。
KING OF TIMEのデータをMySQLへ複製させるジョブを設定
あとはKING OF TIMEのデータをMySQLへ複製させるジョブをCData Syncに登録するだけです。
「ジョブ」タブの「ジョブを追加」をクリック
- ジョブ名:任意
- ソース:KING OF TIME
- 同期先:MySQL
- 全テーブルを同期します。:全テーブルを同期したい場合は✔
※今回は個別のテーブルを同期させます。
「作成」をクリック
「テーブルを追加」をクリック
複製するテーブルを選択して、「選択したテーブルを追加」をクリック
「変更を保存」をクリックしてジョブを保存します。
直ぐに複製したい場合は、テーブル横のチェックボックスを✔して「実行」をクリックでMySQLに複製されます。
実行前 | 実行後 |
---|---|
複製するデータの条件を指定したい場合は「カスタムクエリを作成」でSQLクエリにて指定が可能です。 また、ジョブのスケジュールや実行結果の通知等の設定も他タブにて行えます。
これでKING OF TIMEのテーブルをMySQLに複製することができるようになりました。
※追記
日別勤務データ等のデータを取得する際の日付の範囲指定の書き方です。
[Date]>=開始日 AND [Date]<=終了日
「=」イコールを含む形の条件として設定します。
また他にも各種テーブルで条件指定が必須な場合があります。以下にサンプルのSQLがありますので、参考にしてみてください。
SELECT * FROM DailyWorkings; // 当日分だけ取得します。APIの仕様。 SELECT * FROM DailyWorkings WHERE CurrentDateEmployeeDivisionCode = '1000'; // 所属部署で取得します。 SELECT * FROM DailyWorkings WHERE Date <= '2020-08-11' AND Date >= '2020-08-11'; SELECT * FROM MonthlyWorkings; SELECT * FROM MonthlyWorkings WHERE Date = '2020-01'; // 必ず従業員の人数分、取得できる。 SELECT * FROM DailyWorkingsTimeRecords; SELECT * FROM DailyWorkingsCosts; SELECT * FROM MonthlyWorkings; SELECT * FROM MonthlyWorkings WHERE Date = '2020-01'; // 必ず従業員の人数分、取得できる。 SELECT * FROM MonthlyWorkingsCosts; SELECT * FROM MonthlyWorkingsCosts WHERE CurrentEmployeeTypeCode = '1000'; SELECT * FROM MonthlyWorkingsCosts WHERE Date = '2020-01'; // 必ず従業員の人数分、取得できる。 SELECT * FROM MonthlyWorkingsHolidayRemained WHERE EmployeeTypeCode = '1000' AND TargetDate = '2020-07'; SELECT * FROM YearlyWorkingsHolidays WHERE EmployeeTypeCode = '1000' AND Year = '2019'; SELECT * FROM DailySchedules; SELECT * FROM DailySchedules WHERE Date <= '2020-08-12' AND Date >= '2020-08-11'; SELECT * FROM DailySchedulesCosts; SELECT * FROM DailySchedulesCosts WHERE Date <= '2020-08-12' AND Date >= '2020-08-11'; SELECT * FROM MonthlySchedulesCosts; SELECT * FROM MonthlySchedulesCosts WHERE Date = '2020-08'; SELECT * FROM RequestsSchedules WHERE TargetDate = '2020-08'; SELECT * FROM RequestsSchedules WHERE TargetDate = '2020-08' and AdministratorKey = '1231231'; SELECT * FROM RequestsOvertimes WHERE TargetDate = '2020-08'; SELECT * FROM RequestsTimereCords WHERE TargetDate = '2020-08'; SELECT * FROM RequestsOvertimeLimits WHERE TargetDate = '2020-08';
手順(KING OF TIME ⇒ CData Sync ⇒ Amazon S3)
次にKING OF TIMEのデータをAmazon S3にCSV出力する方法を説明します。
CData Syncの設定
CData Syncを起動します。
同期先にAmazon S3を設定
同期先となるAmazon S3の設定を行います。
「接続」-「同期先」タブの「Amazon S3」をクリック
- 名前:任意
- プロバイダークラス:System.Data.CData.S3Destination
- フォーマット設定:プロパティリスト
- AWS Access Key:AWSのAccess Keyを入力
- AWS Region:AWSの地域を選択
- AWS Secret Key:AWSのSecret Keyを入力
- Bucket:Amazon S3の出力先となるS3 URIを入力
- Use Virtual Hosting:デフォルトのTrueでOK
「接続のテスト」をクリックして、接続できたら「変更を保存」をクリックして保存します。
これでCData SyncとAmazon S3の接続ができるようになりました。
KING OF TIMEのデータをAmazon S3へCSV出力させるジョブを設定
あとはKING OF TIMEのデータをAmazon S3へCSV出力させるジョブをCData Syncに登録するだけです。
「ジョブ」タブの「ジョブを追加」をクリック
- ジョブ名:任意
- ソース:KING OF TIME
- 同期先:S3Destination
- 全テーブルを同期します。:全テーブルを同期したい場合は✔
※今回は個別のテーブルを同期させます。
「作成」をクリック
「テーブルを追加」をクリック
複製するテーブルを選択して、「選択したテーブルを追加」をクリック
「変更を保存」をクリックしてジョブを保存します。
直ぐにCSV出力したい場合は、テーブル横のチェックボックスを✔して「実行」をクリックでAmazon S3へCSV出力されます。
実行前
実行後
CSV出力するデータの条件を指定したい場合は「カスタムクエリを作成」でSQLクエリにて指定が可能です。 また、ジョブのスケジュールや実行結果の通知等の設定も他タブにて行えます。
これでKING OF TIMEのテーブルをAmazon S3へCSV出力することができるようになりました。
終わりに
今回はCData SyncでKING OF TIMEのデータをMySQLに複製やAmazon S3にCSV出力する方法を紹介しました。
他にもKING OF TIMEに関する記事がありますので、参考にしてみてください。
CData製品を使用してみて不明な点があれば、テクニカルサポートまでお気軽にどうぞ。