目录

目的

自定义函数让您能够创建用户定义的函数,然后可在 Zoho People 中的任何地方重复使用。您可维护和编辑自定义函数,脚本存放在一个中央位置。创建这些函数主要是为了便于处理数据,与第三方和内部应用程序连接以及更新 Zoho People 中的响应。

如何创建自定义函数

  1. 管理员身份登录
  2. 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
  3. 选择表单名
  4. 输入函数名并单击编辑参数
  5. 输入方法名,在方法参数下面,指定自定义值或“显示 people 字段”
  6. 单击保存
  7. 输入脚本并单击保存执行脚本
  8. 执行

9.此时将显示执行消息,如果未显示,请单击再次执行以重试执行

如何将自定义函数映射到工作流

  1. 管理员身份登录
  2. 单击设置 > 自动化下面的工作流 > 添加工作流
  3. 提供所有必需的详情。了解有关配置工作流的更多信息
  4. 操作下面,单击自定义函数,然后单击添加图标以在工作流中添加自定义函数,或单击文件夹图标映射自定义函数

  1. 单击保存

示例情景 - 使用自定义函数自动更新差旅费用

考虑一个计算员工差旅费用的场景。所有差旅费用会使用以下自定义函数在差旅费用表单中自动计算。因此,各个员工的自助服务表单将获得更新的差旅费用详情。为了实现这一点,必须在员工自助服务表单中创建自定义字段。

  1. 管理员身份登录
  2. 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
  3. 选择各自的表单名
  4. 输入函数名
  5. 输入如下所示的脚本:

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、名、姓、邮箱地址自动添加到各自的创建者表单中。

示例情景 - 使用自定义函数在员工离职之日将员工状态从活跃自动更改为离职

让我们考虑这样一种情况,一位员工正在辞职,而您希望从离职之日起在员工表单中将状态更改为已辞职。您可以复制以下脚本并粘贴在我们的自定义函数中,从而几步便可完成此操作。通过为员工添加离职详情,将会触发一个工作流,并执行映射的自定义函数。成功执行之后,所选员工的员工状态值将更改为已离职。因而,该员工不能再登录您机构的帐户。

  1. 管理员身份登录
  2. 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
  3. 选择各自的表单名
  4. 输入函数名
  5. 输入如下所示的脚本:
    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;
     
  6. 单击保存执行脚本
  7. 管理员身份登录
  8. 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
  9. 选择各自的表单名
  10. 输入函数名
  11. 输入如下所示的脚本:
    record = Map();

    updaterecord = Map();

    record.put("recordid",erecno);

    record.put("Employeestatus",'Resigned');

    updaterecord = zoho.people.update("employee",record);

    info updaterecord;

     

  12. 单击保存执行脚本

示例情景 - 在考勤模块中自动签退

我们来看一下这个场景,一位员工在一天结束时忘记在系统中签退。可以使用自定义函数在系统上执行自动签退。这样可帮助追踪员工的准确工作时数。

有两种方法可做到这一点:

方法 1:当未进行签退时,可使用自定义函数将各自轮班的结束时间更新为系统上的签退时间。

步骤:

  1. 管理员身份登录
  2. 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
  3. 选择各自的表单名
  4. 函数名中输入自动检查轮班结束时间
  5. 提供如下所示的参数
    recordid = ZohoID(P_AttendanceForm)

    erecno = ZohoID(P_EmployeeForm)
  6. 输入如下所示的脚本:
  7. 输入如下所示的脚本:

    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 小时

  8. 单击保存执行脚本