目的

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

如何创建自定义函数?

  1. 以管理员身份登录。
  2. 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
  3. 选择表单名
  4. 输入函数名并单击编辑参数
  5. 输入方法名,在方法参数下面,提供指定自定义值显示 people 字段
  6. 单击保存
  7. 输入脚本并单击保存并执行脚本
  8. 在必填字段中输入值并单击执行
  9. 此时将显示执行消息,如果未显示,请单击再次执行以重试执行。

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

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

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

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

  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;

     

     

示例情景 - 使用自定义函数自动与creator同步数据。

要编辑您机构中的员工记录,使用下面指定的脚本可将他们的员工 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.localzoho.com/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. 输入如下所示的脚本:

    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(基于用户的轮班)

  7. 单击保存并执行脚本

方法 2:如果未执行签退,那么可使用自定义函数在系统中将签到时间之后的“08”个小时更新为签退时间。

步骤:

  1. 以管理员身份登录。
  2. 单击设置 > 自动化下面的自定义函数 > 添加自定义函数
  3. 选择相应的表单名
  4. 在“函数名”中输入在签到之后 8 小时自动签退
  5. 提供如下所示的参数

    recordid = ZohoID(P_AttendanceForm)
    erecno = ZohoID(P_EmployeeForm)

  6. 输入如下所示的脚本

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

  7. 单击保存并执行脚本