Zoho Peopleの設定→自動化→カスタム関数のメニューからカスタム関数を作成し、以下の内容を設定してください。
設定後、カスタム関数の呼び出しの処理を、ワークフローでの起動、または、独自の処理のボタンとして配置して起動する設定を行ってください。
関数の引数名:引数の内容
- recordID:Zoho Peopleの従業員データのID
- SmartHRID:SmartHRのデータID(従業員フォームより取得)
設定イメージ
関数の内容
- //SmartHR API呼び出し
- accessToken = "xxxxxxxxxxxxxxxxxxxxxx";
- tenantID = "xxxxxxxxxxxxxxxxxxxxxx";
- u = "https://" + tenantID + ".smarthr.jp/api/v1/crews/" + SmartHRID + "?access_token=" + accessToken;
- res = invokeurl
- [
- url :u
- type :GET
- ];
- //結果の処理
- m = res.toMap();
- //更新用マップの作成
- updateMap = Map();
- //従業員番号
- emp_code = m.get("emp_code");
- //姓
- last_name = m.get("last_name");
- //名
- first_name = m.get("first_name");
- //誕生日
- birth_at = m.get("birth_at");
- if(birth_at != null)
- {
- birth_at_formatted = birth_at.toDate("yyyy-MM-dd").toString("yyyy/MM/dd");
- updateMap.put("Date_of_birth",birth_at_formatted);
- info "誕生日:" + birth_at;
- }
- //電話番号
- tel_number = m.get("tel_number");
- if(tel_number != null)
- {
- updateMap.put("Residence_phone",tel_number);
- }
- //住所
- address = m.get("address");
- if(address != null)
- {
- address_map = address.toMap();
- pref = address_map.get("pref");
- city = address_map.get("city");
- street = address_map.get("street");
- address_text = pref + " " + city + " " + street;
- if(address_map.get("building") != null)
- {
- building = address_map.get("building");
- address_text = address_text + " " + building;
- }
- updateMap.put("Present_address",address_text);
- }
- //住民票住所
- resident_card_address_text = "";
- resident_card_address = m.get("resident_card_address");
- if(resident_card_address != null)
- {
- resident_card_address_map = resident_card_address.toMap();
- resident_card_pref = resident_card_address_map.get("pref");
- resident_card_city = resident_card_address_map.get("city");
- resident_card_street = resident_card_address_map.get("street");
- resident_card_address_text = resident_card_pref + " " + resident_card_city + " " + resident_card_street;
- if(resident_card_address_map.get("building") != null)
- {
- resident_card_building = resident_card_address_map.get("building");
- resident_card_address_text = resident_card_address_text + " " + resident_card_building;
- }
- updateMap.put("Permanent_address",resident_card_address_text);
- }
- //緊急連絡先
- emergency_relation_name = m.get("emergency_relation_name");
- if(emergency_relation_name != null)
- {
- updateMap.put("Relationship",emergency_relation_name);
- }
- emergency_last_name = m.get("emergency_last_name");
- emergency_contact_name = "";
- if(emergency_last_name != null)
- {
- emergency_contact_name = emergency_contact_name + emergency_last_name;
- }
- emergency_first_name = m.get("emergency_first_name");
- if(emergency_first_name != null)
- {
- emergency_contact_name = emergency_contact_name + emergency_first_name;
- }
- if(emergency_last_name != null || emergency_first_name != null)
- {
- updateMap.put("Emergency_contact",emergency_contact_name);
- }
- emergency_tel_number = m.get("emergency_tel_number");
- if(emergency_tel_number != null)
- {
- updateMap.put("Emergency_landline",emergency_tel_number);
- }
- //口座番号
- bank_accounts = m.get("bank_accounts");
- if(bank_accounts != null)
- {
- bank_accounts_map = bank_accounts.toMap();
- bank_code = bank_accounts_map.get("bank_code");
- bank_branch_code = bank_accounts_map.get("bank_branch_code");
- // account_type = bank_accounts_map.get("account_type");
- account_number = bank_accounts_map.get("account_number");
- account_holder_name = bank_accounts_map.get("account_holder_name");
- updateMap.put("Bank_Ac_number",bank_code + "-" + bank_branch_code + "-" + account_number + " " + account_holder_name);
- }
- //入社日
- entered_at = m.get("entered_at");
- if(entered_at != null)
- {
- entered_at_formatted = entered_at.toDate("yyyy-MM-dd").toString("yyyy/MM/dd");
- updateMap.put("Dateofjoining",entered_at_formatted);
- }
- //更新用マップの作成
- updateMap.put("recordid",recordID);
- updateMap.put("EmployeeID",emp_code);
- updateMap.put("LastName",last_name);
- updateMap.put("FirstName",first_name);
- updateR = zoho.people.update("employee",updateMap);
- //エラーチェック
- if(updateR.containKey("response"))
- {
- updateResponseText = updateR.get("response");
- updateResponseMap = updateResponseText.toMap();
- if(updateResponseMap.containKey("errors"))
- {
- errorsText = updateResponseMap.get("errors");
- errorsMap = errorsText.toMap();
- errorCode = errorsMap.get("code");
- errorMessage = errorsMap.get("message");
- sendmail
- [
- from :zoho.adminuserid
- to :zoho.loginuserid
- subject :"エラーが発生しました"
- message :"エラーコード:" + errorCode + " <br/>エラーメッセージ:" + errorMessage
- ]
- }
- }
- else
- {
- sendmail
- [
- from :zoho.adminuserid
- to :zoho.loginuserid
- subject :"更新結果"
- message :"更新結果:" + updateR + "<br/><br/>"
- ]
- }
※「xxxxxxxxxxxxxxxxxxxxxx」という文字で示してある箇所は、利用するSmartHRのアカウントで取得した情報で置き換えてください。具体的には以下の4箇所です。
※上記はスクリプトのサンプルです。処理内容に関しては、利用される方に合わせてカスタマイズが必要です。動作の保証や動作しない場合の個別の確認やサポートは行っておりませんのでご了承ください。