目录
- 目的
- 如何创建自定义函数
- 如何将自定义函数映射到工作流
- 示例情景 - 使用自定义函数自动更新差旅费用
- 示例情景 - 使用自定义函数自动与创建者同步数据
- 示例情景 - 使用自定义函数自动更改员工状态
- 示例情景 - 使用自定义函数在考勤中自动签退
目的
自定义函数让您能够创建用户定义的函数,然后可在 Zoho People 中的任何地方重复使用。您可维护和编辑自定义函数,脚本存放在一个中央位置。创建这些函数主要是为了便于处理数据,与第三方和内部应用程序连接以及更新 Zoho People 中的响应。
如何创建自定义函数
- 以管理员身份登录
- 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
- 选择表单名
- 输入函数名并单击编辑参数
- 输入方法名,在方法参数下面,指定自定义值或“显示 people 字段”
- 单击保存
- 输入脚本并单击保存并执行脚本
-
执行
9.此时将显示执行消息,如果未显示,请单击再次执行以重试执行
如何将自定义函数映射到工作流
- 以管理员身份登录
- 单击设置 > 自动化下面的工作流 > 添加工作流
- 提供所有必需的详情。了解有关配置工作流的更多信息
- 在操作下面,单击自定义函数,然后单击添加图标以在工作流中添加自定义函数,或单击文件夹图标映射自定义函数
- 单击保存
示例情景 - 使用自定义函数自动更新差旅费用
考虑一个计算员工差旅费用的场景。所有差旅费用会使用以下自定义函数在差旅费用表单中自动计算。因此,各个员工的自助服务表单将获得更新的差旅费用详情。为了实现这一点,必须在员工自助服务表单中创建自定义字段。
- 以管理员身份登录
- 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
- 选择各自的表单名
- 输入函数名
- 输入如下所示的脚本:
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;
示例情景 - 使用自定义函数自动与创建者同步数据
要编辑您机构中的员工记录,使用下面指定的脚本可将他们的员工 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.zoho.com.cn/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");
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.cn/people/api/attendance",addrecord);
info updaterecord;
}输出:
签退时间 = 签到时间 + 8 小时
- 单击保存并执行脚本