【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】カスタム関数の作成

        カスタム関数はエンタープライズプランの機能です。 [設定] > [自動化] > [アクション] > [カスタム関数]に移動してください。 表示された画面で「自分で作成する」をクリックしてください。 カスタム関数の作成画が表示されます。 カスタム関数についての詳細は以下をご参照ください。 https://www.zoho.com/jp/crm/help/automation/custom-functions-programming-dre.html
      • 【Zoho CRM】カスタム関数:1年分の商談の金額を月別に分割して計上する

        サンプルの設定内容は以下です。 タブ 商談 引数 Deal_Name=  商談.商談名 accountID =  商談.取引先のID Closing_Date=  商談.完了予定日 amount =  商談.総額 stage =  商談.ステージ 関数の内容 //登録用のマップ m=map(); //繰り返し処理用のリスト monthIndex={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //月あたりの金額 monthlyAmount=(amount  / ...
      • 【Zoho CRM】複数のレコードに対してカスタム関数を実行したい

        Q. データの一覧から、複数のデータを選択してカスタム関数をボタンから実行したいです。 このとき、関数にデータのIDを引数として渡しますが、各データのIDはどう扱うべきでしょうか? A. 複数のデータを選択してカスタム関数を実行する場合、 引数として渡されるデータのIDは、「|||」で 繋ぐ形で 下記のように、一つの文字列で扱われます。 1000000001|||1000000002|||1000000003|||1000000004 ...
      • 【Zoho CRM】Sansanの名刺データを取得して見込み客データを更新する

        引数 SansanAPIKey = カスタム値(SansanのAPIキー) leadID =  「見込み客」の「見込み客のID」 email = 「見込み客」の「メール」 関数の内容 //認証用ヘッダー h={ "X-Sansan-Api-Key" : input.SansanAPIKey }; //リクエストURL u="https://api.sansan.com/v2.7/bizCards/search"; //範囲(me|all) range="all"; //パラメーターのエンコード ...
      • 【Zoho CRM】Call Intelligence(コール・インテリジェンス)の情報をZoho CRMへ連携する

        概要 「Call Intelligence(以下コール・インテリジェンス)」とZoho CRMを連携させる方法です。Call Intelligence(コール・インテリジェンス)の通話情報をZoho CRMのスケジュール処理で定期的に取り込み、キャンペーン、見込み客/連絡先、商談と関連付けます。 コール・インテリジェンスとは? 楽天コミュニケーションズ株式会社が提供する電話の効果測定ツールです。電話でお問い合わせの受付をする広告施策や広告価値の見える化が可能です。 設定 Zoho ...

      Zoho Community

      Zoho ユーザーが集うオンラインフォーラムでは、サービスの使いこなしに関する活発な議論や情報交換が行われています。