目次
- 目的
- カスタム関数を作成するには
- ワークフローにカスタム関数を関連付けるには
- 利用例:出張旅費の自動計算
- 利用例:他のデータベースとの同期(Zoho Creator)
- 利用例:従業員のステータスの自動変更
- 利用例:自動退勤
目的
カスタム関数を設定すると、Zoho Peopleのデータの処理を自動かできます(自動実行する処理をあらかじめ設定しておき、設定した内容を再利用できます)。設定したカスタム関数の一覧を確認したり、後で内容を編集したりすることも可能です。主に、データの更新や集計、他のサービスやアプリケーションとの連携等に用います。
カスタム関数を作成するには
- ホーム画面から設定 > 自動化 > カスタム関数 > カスタム関数の追加に移動してください。
- フォーム名を選択してください。
- 関数名を入力し、パラメーターの編集のメニューをクリックしてください。
- メソッド名を入力し、引数を入力してください。
- 保存をクリックしてください。
- スクリプトを入力し、保存や実行を行ってください。
実行
実行が完了するとメッセージが表示されます。必要に応じてもう一度実行してください。
ワークフローにカスタム関数を関連付けるには
- ホーム画面から、設定(歯車のアイコン) > 自動化 > ワークフロー > ワークフローの追加に移動してください。
- 詳細を入力してください。ワークフローの詳細については、関連するヘルプページを参照してください。
- 処理の欄でカスタム関数をクリックし、既存の関数を選択する場合はフォルダーのアイコンを、新しい関数を追加する場合は追加のアイコンをクリックしてください。
- 保存をクリックしてください。
利用例:出張旅費の自動計算
従業員の出張旅費を自動計算する例です。出張旅費のフォームに入力された明細の金額を自動で集計します。また、従業員がセルフサービスのページから出張旅費の集計結果について確認できるように表示できます。これを実現するには、出張旅費の集計結果の表示用の項目をあらかじめ従業員のフォームに追加しておく必要があります。
- ホーム画面から設定 > 自動化 > カスタム関数 > カスタム関数の追加に移動してください。
- フォーム名を選択してください。
- 関数名を入力してください
- 以下のスクリプトを入力してください:
travelExpenseMap = zoho.people.getRecordById("travelexpenses",travel_id);
travelId = travelExpenseMap.get("TravelID.ID");
travelIdStr = travelExpenseMap.get("TravelID");
tabularMap = Map();
tabularMap = travelExpenseMap.get("tabularSections").toMap();
tabularList = List();
tabularList = tabularMap.get("Expense");
travelExpMap = Map();
totalExp = 0;
for each str in tabularList { travelExpMap = str.toMap();
totalExp = totalExp + travelExpMap.get("Ticket").toDecimal() + travelExpMap.get("Lodging").toDecimal() + travelExpMap.get("LocalConveyance").toDecimal() + travelExpMap.get("Boarding").toDecimal() + travelExpMap.get("Others").toDecimal() + travelExpMap.get("Incidentals").toDecimal() + travelExpMap.get("Phone").toDecimal(); } info totalExp;
travelReqUpdMap = Map();
travelReqUpdMap.put("recordid",travelId.toString());
erecno = travelExpenseMap.get("EmployeeID.ID");
updateemp = Map();
updaterecord = Map();
updateemp.put("recordid",erecno);
updateemp.put("Total_Expense",totalExp.toString());
updaterecord = zoho.people.update("employee",updateemp);
info updaterecord;
利用例:他のデータベースとの同期(Zoho Creator)
従業員のデータの編集時に、該当の従業員番号、姓、名、メールアドレスを他のデータベースに送信して保存できます(以下は、Zoho Creatorのデータベースの例です)。
- ホーム画面から設定 > 自動化 > カスタム関数 > カスタム関数の追加に移動してください。
- フォーム名を選択してください。
- 関数名を入力してください
- 以下のスクリプトを入力してください:record = Map();
updaterecord = Map();
record.put("recordid",erecno);
record.put("Employeestatus",'Resigned');
updaterecord = zoho.people.update("employee",record);
info updaterecord; - スクリプトの保存 & 実行のメニューをクリックしてください。
利用例:従業員のステータスの自動変更
従業員が退職することになった場合に、退職日において該当の従業員のステータスを「退職」に変更することができます。カスタム関数の機能を用いて処理を自動化できます。従業員のフォームに退職に関する詳細を追加しておき、そちらのデータをもとにワークフローを用いてカスタム関数を実行できます。実行が完了した際に、従業員のステータスを自動で「退職」に変更できます。これにより、該当の従業員はZoho Peopleにサインインできなくなります。
- ホーム画面から設定 > 自動化 > カスタム関数 > カスタム関数の追加に移動してください。
- フォーム名を選択してください。
- 関数名を入力してください
- 以下のスクリプトを入力してください:getrecord = Map();
pushrecord = Map();
getrecord = zoho.people.getRecordById("employee",erecno);
params = Map();
params.put("authtoken","19f87d3e2f267887579e467935ac9c86");
params.put("scope","creatorapi");
params.put("Employee_ID",empid);
params.put("First_Name",fname);
params.put("Last_Name",lname);
params.put("Email_ID",emailid);
pushrecord = postUrl("https://creator.zoho.com/api/karenjohn/json/custom-function/form/Custom_form/record/add/",params);
info pushrecord; - スクリプトの保存 & 実行のメニューをクリックしてください。
利用例:自動退勤
従業員が退勤の処理を忘れがちだとします。このような場合に、カスタム関数を用いて自動で退勤の処理を行えます。出退勤の記録漏れを防げます。
2つの方法があります。
方法1:退勤のデータが入力されていない(退勤の打刻がされていない)場合、シフトの終了時刻を用いて退勤時刻を記録する。
手順:
- ホーム画面から設定 > 自動化 > カスタム関数 > カスタム関数の追加に移動してください。
- フォーム名を選択してください。
- 関数名を入力してください(例:自動退勤)。
- 引数(パラメーター)を以下のように入力してください:
erecno = ZohoID(P_EmployeeForm)
- 以下のスクリプトを入力してください:
getdata = Map();
getempdata = Map();
addrecord = Map();
tokenvalue= <authtoken>;
updaterecord = Map();
getdata = zoho.people.getRecordById("P_AttendanceForm",recordid);
expcheckout = getdata.get("ExpectedToTime");
checkout = getdata.get("ToTime");
getempdata = zoho.people.getRecordById("employee",erecno);
empid = getempdata.get("EmployeeID");
if(isBlank(checkout))
{
addrecord.put("authtoken",tokenvalue);
addrecord.put("empId",empid);
addrecord.put("checkOut",expcheckout);
updaterecord = postUrl("https://people.zoho.com/people/api/attendance",addrecord);
info updaterecord;
}
処理結果:
退勤時刻=シフトの終了時刻
- スクリプトの保存 & 実行のメニューをクリックしてください。
方法2: 退勤のデータが入力されていない(退勤の打刻がされていない)場合、出勤時から8時間後のを用いて退勤時刻を記録する。
- ホーム画面から設定 > 自動化 > カスタム関数 > カスタム関数の追加に移動してください。
- フォーム名を選択してください。
- 関数名を入力してください(例:8時間後に自動退勤)。
- 引数(パラメーター)を以下のように入力してください:
erecno = ZohoID(P_EmployeeForm)
- 以下のスクリプトを入力してください:
getdata = Map();
getdata = Map();
getempdata = Map();
addrecord = Map();
tokenvalue =
updaterecord = Map();
getdata = zoho.people.getRecordById("P_AttendanceForm",recordid);
expcheckout = getdata.get("ExpectedToTime");
checkout = getdata.get("ToTime");
checkin = getdata.get("FromTime").toTime();
addedhrs= checkin.addHour(8);
getempdata = zoho.people.getRecordById("employee",erecno);
empid = getempdata.get("EmployeeID");
if(isBlank(checkout))
{
addrecord.put("authtoken",tokenvalue);
addrecord.put("empId",empid);
addrecord.put("checkOut",addedhrs.toString());
updaterecord = postUrl("https://people.zoho.com/people/api/attendance",addrecord);
info updaterecord;
}
処理結果:
退勤時刻=出勤時から8時間後
- スクリプトの保存 & 実行のメニューをクリックしてください。