ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →CData Arc でチームスピリット(TeamSpirit)の勤怠情報をカオナビへ連携する(GetCustomReport 版)
TeamSpirit
カオナビ
CData Arc
この記事のシナリオ
事前準備
CData 製品のダウンロードとインストール
CData Arc スタートアップガイドとナレッジベース
TeamSpirit の構成
カオナビの構成
ちなみに、この記事とは逆のパターンですが「カオナビからのデータ取得」については、CData API Driver でサンプルとして使えるカオナビ用API Profile をご用意しています。カオナビからデータを取得するシナリオについては、こちらを利用するとよりシンプルに実現頂けると思います。詳しくはこちらの記事を参考にしてください。
カオナビの API をドライバー化:各種ツールから接続してみた | CData Software Blog
連携フローの作成
Salesforce コネクタ
<reportFilter>WHERE teamspirit__AtkEmpMonth__c.teamspirit__YearMonthS__c = '2022/09'</reportFilter>
/services/data/<API バージョン>/analytics/reports/<レポートのSalesforce ID>/describe
Script コネクタ
<!-- kaonavi アクセストークンを取得して、メッセージヘッダに設定 --> <arc:set attr="consumer_key" value="{consumer_key}" /> <arc:set attr="consumer_secret" value="{consumer_secret}" /> <arc:set attr="consumer" value="[consumer_key]:[consumer_secret]" /> <arc:set attr="consumer" value="[consumer | base64encode()]" /> <arc:set attr="http.URL" value="https://api.kaonavi.jp/api/v2.0/token" /> <arc:set attr="http.header:name#1" value="Authorization" /> <arc:set attr="http.header:value#1" value="Basic [consumer]" /> <arc:set attr="http.paramname#1" value="grant_type" /> <arc:set attr="http.paramvalue#1" value="client_credentials" /> <arc:set attr="http.contenttype" value="application/x-www-form-urlencoded;charset=UTF-8" /> <arc:set attr="http.sslcert" value="*" /> <arc:set attr="tmp.text" value="" /> <arc:call op="httpPost" in="http"> <arc:set attr="tmp.text" value="[http:content]" /> </arc:call> <arc:call op="jsonOpen" in="tmp" out="jout"> <arc:set attr="jout.map:access_token" value="/json/access_token" /> <arc:call op="jsonDomGet" in="jout" out="result"> <arc:set attr="output.header:access_token" value="[result.access_token]" /> </arc:call> </arc:call> <!-- GetCustomReport のパラメータ情報を出力 --> <arc:set attr="output.filename" value="params.xml" /> <arc:set attr="output.encoding" value="UTF-8" /> <arc:set attr="output.Data"> <Items> <reportId>{月別勤怠一覧レポートのSalesforce Id}</reportId> <reportFilter>WHERE teamspirit__AtkEmpMonth__c.teamspirit__YearMonthS__c = '2022/09'</reportFilter> </Items> </arc:set> <arc:push item="output" />
<Items> <Item> <reportId>{月別勤怠一覧レポートのSalesforce Id}</reportId> <reportFilter>WHERE teamspirit__AtkEmpMonth__c.teamspirit__YearMonthS__c = '2022/09'</reportFilter> </Item> </Items>
XMLMap(1) コネクタ
<Items> <reportId /> <reportFilter /> </Items>
XMLMap(2) コネクタ
<Items> <result_set> <社員ID_上長_氏名 /> <最終打刻日 /> <休日深夜法内_時 /> <平日深夜法外_時 /> <限度超過時間_時 /> <社員ID_社員コード /> <平日深夜法内残業_時 /> <平均出社時刻_時 /> <社員ID_部署ID_部署コード /> <過不足時間_時 /> <所定出勤日数 /> <休日出勤日数 /> <出社打刻率 /> <勤務時間外私用外出回数_削除予定_ /> <早退回数 /> <休日日中法内_時 /> <社員ID_部署ID_親部署ID_部署コード /> <法定休日出勤日数 /> <法定時間外残業_時 /> <平日日中法内残業_時 /> <平日日中法内所定_時 /> <平日日中法外_時 /> <退社打刻率 /> <実労働時間_時 /> <勤務時間内私用外出時間_時 /> <無給休暇日数 /> <深夜労働時間_時 /> <社員ID_部署ID_親部署ID_勤怠部署名 /> <時間単位有休取得時間_時 /> <遅刻回数 /> <勤務時間外私用外出時間_時_削除予定_ /> <打刻率 /> <退社打刻回数 /> <代休取得日数 /> <最終出社打刻日 /> <私用外出回数_削除予定_ /> <控除早退時間_時 /> <社員ID_社員名 /> <割増労働時間_時 /> <控除遅刻時間_時 /> <勤怠月度 /> <総労働時間_時 /> <休憩時間_時 /> <休日深夜法外_時 /> <祝日出勤日数 /> <遅刻時間_時 /> <勤務時間内私用外出回数 /> <残業時間_時 /> <有休取得日数 /> <出社打刻回数 /> <早退時間_時 /> <所定労働時間_時 /> <社員ID_上長_従業員番号 /> <休日日中法外_時 /> <平日深夜法内所定_時 /> <60時間超残業_時 /> <公用外出時間_時 /> <法定休日日中_時 /> <法定休日深夜_時 /> <最終退社打刻日 /> <平均退社時刻_時 /> <計画付与有休取得日数 /> <社員ID_部署ID_勤怠部署名 /> <月の法定労働時間_時 /> <控除私用外出時間_時 /> <限度超過回数 /> <控除時間_時 /> <法定時間内残業_時 /> <実出勤日数 /> </result_set> </Items>
<?xml version="1.0" encoding="utf-8"?> <Items xmlns:json="http://arc.cdata.com/ns/jsonconnector" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <member_data json:array="true"> <code>{社員番号}</code> <records json:array="true"> <custom_fields json:array="true"> <id json:type="number">5550</id> <values json:array="true">{所定時間}}</values> </custom_fields> <custom_fields json:array="true"> <id json:type="number">5551</id> <values json:array="true">{時間外時間}}</values> </custom_fields> <custom_fields json:array="true"> <id json:type="number">5552</id> <values json:array="true">{出勤日数}</values> </custom_fields> <custom_fields json:array="true"> <id json:type="number">5553</id> <values json:array="true">{休日出勤}</values> </custom_fields> <custom_fields json:array="true"> <id json:type="number">5554</id> <values json:array="true">{有給日数}</values> </custom_fields> <custom_fields json:array="true"> <id json:type="number">5555</id> <values json:array="true">{欠勤日数}</values> </custom_fields> <custom_fields json:array="true"> <id json:type="number">5556</id> <values json:array="true">{期間}</values> </custom_fields> </records> </member_data> </Items>
構造を示すスキーマファイルでは「{社員番号}」のように記述していますが、実際にAPI 実行されるときの値はマッピングによりストアドプロシージャの実行結果(レポートのデータ)で上書きされます。