目录
目的
自定义函数让您能够创建用户定义的函数,然后可在 Zoho People 中的任何地方重复使用。您可维护和编辑自定义函数,脚本存放在一个中央位置。创建这些函数主要是为了便于处理数据,与第三方和内部应用程序连接以及更新 Zoho People 中的响应。
如何创建自定义函数?
- 以管理员身份登录。
- 单击设置 > 自动化下面的自定义函数 > 添加自定义函数。
- 选择表单名。
- 输入函数名并单击编辑参数。
- 输入方法名,在方法参数下面,提供指定自定义值或显示 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;
示例情景 - 使用自定义函数自动与creator同步数据。
要编辑您机构中的员工记录,使用下面指定的脚本可将他们的员工 ID、名、姓、邮箱地址自动添加到相应的创建者表单中。
示例情景 - 使用自定义函数在员工离职之日将员工状态从活跃自动更改为离职。
让我们考虑这样一种情况,一位员工正在辞职,而您希望从离职之日起在员工表单中将状态更改为已辞职。您可以复制以下脚本并粘贴在我们的自定义函数中,从而几步便可完成此操作。通过为员工添加离职详情,将会触发一个工作流,并执行映射的自定义函数。成功执行之后,所选员工的员工状态值将更改为已离职。因而,该员工不能再登录您机构的帐户。
- 以管理员身份登录。
- 单击设置 > 自动化下面的自定义函数 > 添加自定义函数。
- 选择相应的表单名。
- 输入函数名。
- 输入如下所示的脚本:
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.localzoho.com/api/karenjohn/json/custom-function/form/Custom_form/record/add/",params);
info pushrecord; - 单击保存并执行脚本。
- 以管理员身份登录。
- 单击设置 > 自动化下面的自定义函数 > 添加自定义函数。
- 选择相应的表单名。
- 输入函数名。
- 输入如下所示的脚本:
record = Map();
updaterecord = Map();
record.put("recordid",erecno);
record.put("Employeestatus",'Resigned');
updaterecord = zoho.people.update("employee",record);
info updaterecord; - 单击保存并执行脚本
示例情景 - 在考勤模块中自动签退
我们来看一下这个场景,一位员工在一天结束时忘记在系统中签退。可以使用自定义函数在系统上执行自动签退。这样可帮助追踪员工的准确工作时数。
有两种方法可做到这一点。
方法 1:当未进行签退时,可使用自定义函数将相应轮班的结束时间更新为系统上的签退时间。
步骤:
- 以管理员身份登录。
- 单击设置 > 自动化下面的自定义函数 > 添加自定义函数。
- 选择相应的表单名
- 在函数名中输入“自动检查轮班结束时间”
- 提供如下所示的参数
recordid = ZohoID(P_AttendanceForm)
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.localzoho.com/people/api/attendance",addrecord);
info updaterecord;
}输出:
签退时间 = ExpectedToTime(基于用户的轮班)
-
单击保存并执行脚本
方法 2:如果未执行签退,那么可使用自定义函数在系统中将签到时间之后的“08”个小时更新为签退时间。
步骤:
- 以管理员身份登录。
- 单击设置 > 自动化下面的自定义函数 > 添加自定义函数。
- 选择相应的表单名
- 在“函数名”中输入在签到之后 8 小时自动签退
- 提供如下所示的参数
recordid = ZohoID(P_AttendanceForm)
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");
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.localzoho.com/people/api/attendance",addrecord);
info updaterecord;
}输出:
签退时间 = 签到时间 + 8 小时
- 单击保存并执行脚本