【Zoho People】カスタム関数:SmartHRから従業員データを取得してZoho Peopleの従業員データに反映する

【Zoho People】カスタム関数:SmartHRから従業員データを取得してZoho Peopleの従業員データに反映する

Zoho Peopleの設定→自動化→カスタム関数のメニューからカスタム関数を作成し、以下の内容を設定してください。
設定後、カスタム関数の呼び出しの処理を、ワークフローでの起動、または、独自の処理のボタンとして配置して起動する設定を行ってください。


関数の引数名:引数の内容
  • recordID:Zoho Peopleの従業員データのID
  • SmartHRID:SmartHRのデータID(従業員フォームより取得)
設定イメージ


関数の内容
  1. //SmartHR API呼び出し
  2. accessToken = "xxxxxxxxxxxxxxxxxxxxxx";
  3. tenantID = "xxxxxxxxxxxxxxxxxxxxxx";
  4. u = "https://" + tenantID + ".smarthr.jp/api/v1/crews/" + SmartHRID + "?access_token=" + accessToken;
  5. res = invokeurl
  6. [
  7. url :u
  8. type :GET
  9. ];
  10. //結果の処理
  11. m = res.toMap();
  12. //更新用マップの作成
  13. updateMap = Map();
  14. //従業員番号
  15. emp_code = m.get("emp_code");
  16. //姓
  17. last_name = m.get("last_name");
  18. //名
  19. first_name = m.get("first_name");
  20. //誕生日
  21. birth_at = m.get("birth_at");
  22. if(birth_at != null)
  23. {
  24. birth_at_formatted = birth_at.toDate("yyyy-MM-dd").toString("yyyy/MM/dd");
  25. updateMap.put("Date_of_birth",birth_at_formatted);
  26. info "誕生日:" + birth_at;
  27. }
  28. //電話番号
  29. tel_number = m.get("tel_number");
  30. if(tel_number != null)
  31. {
  32. updateMap.put("Residence_phone",tel_number);
  33. }
  34. //住所
  35. address = m.get("address");
  36. if(address != null)
  37. {
  38. address_map = address.toMap();
  39. pref = address_map.get("pref");
  40. city = address_map.get("city");
  41. street = address_map.get("street");
  42. address_text = pref + " " + city + " " + street;
  43. if(address_map.get("building") != null)
  44. {
  45. building = address_map.get("building");
  46. address_text = address_text + " " + building;
  47. }
  48. updateMap.put("Present_address",address_text);
  49. }
  50. //住民票住所
  51. resident_card_address_text = "";
  52. resident_card_address = m.get("resident_card_address");
  53. if(resident_card_address != null)
  54. {
  55. resident_card_address_map = resident_card_address.toMap();
  56. resident_card_pref = resident_card_address_map.get("pref");
  57. resident_card_city = resident_card_address_map.get("city");
  58. resident_card_street = resident_card_address_map.get("street");
  59. resident_card_address_text = resident_card_pref + " " + resident_card_city + " " + resident_card_street;
  60. if(resident_card_address_map.get("building") != null)
  61. {
  62. resident_card_building = resident_card_address_map.get("building");
  63. resident_card_address_text = resident_card_address_text + " " + resident_card_building;
  64. }
  65. updateMap.put("Permanent_address",resident_card_address_text);
  66. }
  67. //緊急連絡先
  68. emergency_relation_name = m.get("emergency_relation_name");
  69. if(emergency_relation_name != null)
  70. {
  71. updateMap.put("Relationship",emergency_relation_name);
  72. }
  73. emergency_last_name = m.get("emergency_last_name");
  74. emergency_contact_name = "";
  75. if(emergency_last_name != null)
  76. {
  77. emergency_contact_name = emergency_contact_name + emergency_last_name;
  78. }
  79. emergency_first_name = m.get("emergency_first_name");
  80. if(emergency_first_name != null)
  81. {
  82. emergency_contact_name = emergency_contact_name + emergency_first_name;
  83. }
  84. if(emergency_last_name != null || emergency_first_name != null)
  85. {
  86. updateMap.put("Emergency_contact",emergency_contact_name);
  87. }
  88. emergency_tel_number = m.get("emergency_tel_number");
  89. if(emergency_tel_number != null)
  90. {
  91. updateMap.put("Emergency_landline",emergency_tel_number);
  92. }
  93. //口座番号
  94. bank_accounts = m.get("bank_accounts");
  95. if(bank_accounts != null)
  96. {
  97. bank_accounts_map = bank_accounts.toMap();
  98. bank_code = bank_accounts_map.get("bank_code");
  99. bank_branch_code = bank_accounts_map.get("bank_branch_code");
  100. // account_type = bank_accounts_map.get("account_type");
  101. account_number = bank_accounts_map.get("account_number");
  102. account_holder_name = bank_accounts_map.get("account_holder_name");
  103. updateMap.put("Bank_Ac_number",bank_code + "-" + bank_branch_code + "-" + account_number + " " + account_holder_name);
  104. }
  105. //入社日
  106. entered_at = m.get("entered_at");
  107. if(entered_at != null)
  108. {
  109. entered_at_formatted = entered_at.toDate("yyyy-MM-dd").toString("yyyy/MM/dd");
  110. updateMap.put("Dateofjoining",entered_at_formatted);
  111. }
  112. //更新用マップの作成
  113. updateMap.put("recordid",recordID);
  114. updateMap.put("EmployeeID",emp_code);
  115. updateMap.put("LastName",last_name);
  116. updateMap.put("FirstName",first_name);
  117. updateR = zoho.people.update("employee",updateMap);
  118. //エラーチェック
  119. if(updateR.containKey("response"))
  120. {
  121. updateResponseText = updateR.get("response");
  122. updateResponseMap = updateResponseText.toMap();
  123. if(updateResponseMap.containKey("errors"))
  124. {
  125. errorsText = updateResponseMap.get("errors");
  126. errorsMap = errorsText.toMap();
  127. errorCode = errorsMap.get("code");
  128. errorMessage = errorsMap.get("message");
  129. sendmail
  130. [
  131. from :zoho.adminuserid
  132. to :zoho.loginuserid
  133. subject :"エラーが発生しました"
  134. message :"エラーコード:" + errorCode + " <br/>エラーメッセージ:" + errorMessage
  135. ]
  136. }
  137. }
  138. else
  139. {
  140. sendmail
  141. [
  142. from :zoho.adminuserid
  143. to :zoho.loginuserid
  144. subject :"更新結果"
  145. message :"更新結果:" + updateR + "<br/><br/>"
  146. ]
  147. }

※「xxxxxxxxxxxxxxxxxxxxxx」という文字で示してある箇所は、利用するSmartHRのアカウントで取得した情報で置き換えてください。具体的には以下の4箇所です。
  • アクセストークン
  • テナントID

※上記はスクリプトのサンプルです。処理内容に関しては、利用される方に合わせてカスタマイズが必要です。動作の保証や動作しない場合の個別の確認やサポートは行っておりませんのでご了承ください。

    • Related Articles

    • 【Zoho CRM】カスタム関数:1年分の商談の金額を月別に分割して計上する

      下記はサンプルコードです。カスタム関数のカスタマイズ・デバッグ・テストについてはお客様自身にて行っていただく必要がございます。 ゾーホージャパンサポート窓口では承りかねますので予めご了承ください。 タブ 商談 引数 Deal_Name= 商談.商談名 accountID = 商談.取引先のID Closing_Date= 商談.完了予定日 amount = 商談.総額 stage = 商談.ステージ 関数の内容 //登録用のマップ m=map(); //繰り返し処理用のリスト ...
    • 【Zoho CRM】複数のレコードに対してカスタム関数を実行したい

      Q. データの一覧から、複数のデータを選択してカスタム関数をボタンから実行したいです。 このとき、関数にデータのIDを引数として渡しますが、各データのIDはどう扱うべきでしょうか? A. 複数のデータを選択してカスタム関数を実行する場合、 引数として渡されるデータのIDは、「|||」で 繋ぐ形で 下記のように、一つの文字列で扱われます。 1000000001|||1000000002|||1000000003|||1000000004 ...
    • 【Zoho CRM】筆まめクラウド住所録に連絡先データを登録する

      下記はサンプルコードです。カスタマイズ・デバッグ・テストについてはお客様自身にて行っていただく必要がございます。 ゾーホージャパンサポート窓口では承りかねますので予めご了承ください。 引数 access_token = 筆まめアプリケーション認証で取得した「アクセストークン」(カスタム値) refresh_token = 筆まめアプリケーション認証で取得した「リフレッシュトークン」(カスタム値) group_id = 筆まめクラウド住所録の住所録ID(カスタム値) lastname = ...
    • 【Zoho CRM】Sansanの名刺データを取得して見込み客データを更新する

      下記はサンプルコードです。カスタマイズ・デバッグ・テストについてはお客様自身にて行っていただく必要がございます。 ゾーホージャパンサポート窓口では承りかねますので予めご了承ください。 引数 SansanAPIKey = カスタム値(SansanのAPIキー) leadID = 「見込み客」の「見込み客のID」 email = 「見込み客」の「メール」 関数の内容 //認証用ヘッダー h={ "X-Sansan-Api-Key" : input.SansanAPIKey }; //リクエストURL ...
    • 【Zoho CRM】商談の項目に自動的に取引先の項目を反映させることはできますか

      Q. 商談の項目に自動的に取引先の項目を反映させることはできますか? A. ルックアップ項目の連動項目で反映可能です。 詳細は、こちらのヘルプをご確認ください。

    Zoho Community

    オンライン掲示板やユーザー交流会など、Zoho活用に役立つコンテンツが満載!


      Zoho CRM 管理者向けオンライントレーニング

      Zoho CRM 導入後の動き出しをスムーズに。初期設定から操作方法、便利機能まで… Zoho の講師がデモを交えて解説。CRM管理者の必須スキルを短期間で習得しましょう。


        ウェビナー情報はこちら!

        さまざまな企業で業務改善にあたるエキスパートたちの事例セミナーをご提供しております。最新の予定や、配信済みのウェビナー動画はこちらをご確認ください。