
在软件项目管理中,有些事情看似微不足道,但一旦积累多了,就会严重影响效率。比如,手动为每个任务设置工作时间。这类重复性操作不但耗时,还容易出错。有没有一种方法可以基于任务类型自动更新任务时间?答案是肯定的,这就是项目管理软件的自定义函数功能。
一、自定义函数是什么?
自定义函数是 Zoho Projects提供的一种工作流程自动化能力。它允许你在某个触发条件发生后(如任务创建、状态变更),立即执行你定义好的逻辑,比如:
自动分配任务负责人;
自动修改字段数值;
向外部系统发送 Webhook;
或像本文所讲,根据任务类型自动设定工作时间。
这种功能的核心优势在于:用一次配置,代替无数次重复劳动。
Zoho Projects 支持使用 Deluge 脚本语言创建自定义函数,语法直观,配合连接器还能调用系统接口,实现跨模块甚至跨系统操作。
二、常见的项目自动化问题场景
1. 工作时间分配依赖人工判断
很多项目团队,在创建任务时需要根据任务类型设置预计工作时间。但这个动作往往依赖创建者的主观判断,造成标准不一、时间偏差,后续项目统计和汇报也因此变得混乱。
2. 任务信息维护不一致
当团队成员在不同时间或不同角色下维护任务时,容易出现字段未填或填错的情况。特别是在工作时间字段上,经常有人忘记填写。
3. 流程自动化程度低
虽然项目管理工具越来越智能,但不少团队仍然处于半自动或纯手工的管理阶段。没有设定规则和函数,很多本该系统自动完成的操作,仍然靠人手反复处理。
三、自定义函数实战:根据任务类型设置工作时间
以下是一个真实使用场景:客户在任务表单中添加了一个自定义字段“任务类型”,他们希望根据该字段的值自动设置工作时间。任务管理类型与工作时间的映射关系如下:
任务类型 | 工作时间 |
---|---|
AAIR | 12小时 |
客户情报 | 32小时 |
竞争对手情报 | 8小时 |
连接 | 8小时 |
定制情报 | 9小时 |
交易入围名单 | 2小时 |
IT 情报 | 4小时 |
优先任务 | 10小时 |
分析 | 8小时 |
季度分析 | 16小时 |
胜负 | 8小时 |
1. 创建自定义函数前的准备
要使用自定义函数,首先需要配置一个“连接”,即授权函数访问 Zoho Projects 的接口。你需要设置如下的 API 权限范围:
ZohoProjects.portals.READ
ZohoProjects.tasks.ALL
ZohoProjects.timesheets.READ
连接创建成功后,你将获得一个连接名称,用于代码中调用接口。
2. 自定义函数代码结构
以下是该场景中自定义函数的完整代码逻辑:
// scopes: ZohoProjects.portals.READ, ZohoProjects.tasks.ALL, ZohoProjects.timesheets.READ workhourMapping = Map(); workhourMapping.put("AAIR", 12); workhourMapping.put("Account Intel", 32); workhourMapping.put("Competitor Intel", 8); workhourMapping.put("Connects", 8); workhourMapping.put("Deal Shortlisting", 2); workhourMapping.put("IT Intel", 4); workhourMapping.put("Profiling", 8); workhourMapping.put("Quarterly Analysis", 16); workhourMapping.put("Win Loss", 8); if(taskType==null || !workhourMapping.containKey(taskType)) { return "Task type is empty or map doesn't contain the specified task type"; } else { endPoint = "https://projects.zoho.com/restapi/portal/"; taskResponse = zoho.projects.getRecordById(portalId,projectId,"Tasks",taskId,"projects"); owners = taskResponse.get("tasks").get(0).get("details").get("owners"); taskWorks = List(); for each owner in owners { if(owner.get("name").containsIgnoreCase("Unassigned")) { info "No owner found"; break; } else { isOwnerPresent = true; ownerId = owner.get("id"); ownerWorkHours = workhourMapping.get(taskType); taskWork = Map(); taskWork.put("user_id",ownerId); taskWork.put("working_hours",ownerWorkHours); taskWorks.add(taskWork); break; } } updateTaskParameter = Map(); if(isOwnerPresent) { updateTaskParameter.put("owner_work",taskWorks); updateTaskParameter.put("work_type","work_hours"); updateTaskParameter.put("person_responsible",ownerId); updateTaskResponse = zoho.projects.update(portalId,projectId,"tasks",taskId,updateTaskParameter,"你的连接名"); info updateTaskResponse; } } return "success";
3. 说明与注意事项
需要根据你的项目实际字段调整任务类型的匹配值;
owner_work
是 Zoho Projects 接口中用于指定工作时间的参数;函数默认处理任务拥有者中的第一个有效用户;
如果没有分配负责人,将跳过工作时间设置。
四、更多自动化的可能性
1. 自动根据任务标签触发邮件提醒
你可以设置自定义函数,在某类标签被添加到任务时,自动发送通知给特定成员。
2. 创建任务自动打标签
基于任务名称或描述中的关键词,自动为任务打上对应标签,有助于后续分类查看。
3. 周期性任务自动生成
利用函数和计划任务结合,实现每月/每周的重复任务自动创建,避免手动复制。引申:任务自动化:创建任务时如何自动安排会议?
五、为什么选择 Zoho Projects 进行自动化管理?
1. 内置 Deluge 引擎
Zoho 提供的 Deluge 脚本语言语法简洁,适合快速开发业务规则。即使不懂代码,也可以通过文档和示例快速上手。
2. 灵活触发条件
支持基于表单提交、任务更新、状态变化等多个触发器,自动调用自定义函数。
3. 与其他 Zoho 应用无缝联动
你可以将 Projects 中的自动化逻辑延伸到 CRM、Desk、Analytics 等其他模块,实现跨系统的信息流通。
六、FAQs:常见问题解答
Q1:函数可以在所有任务上自动运行吗?
A1:可以设置为某个任务创建或更新时自动运行,也可以批量调用函数处理历史任务。
Q2:函数中能不能调用其他应用的数据?
A2:可以。你可以使用连接访问 Zoho CRM、Zoho Desk 等数据,甚至通过 Webhook 与外部系统集成。
Q3:Deluge 代码哪里可以查语法?
A3:Zoho 官方开发文档提供了完整的 Deluge 指令和示例,建议从简单函数开始尝试。
Q4:自动填写工作时间后可以修改吗?
A4:当然可以。系统设置后仍然支持人工修改,不影响正常操作。
Q5:函数运行失败怎么办?
A5:Zoho 提供日志查看功能,函数出错时可查看报错信息,并逐步调试修复。
写在最后
从日常管理中解放出来的不是时间,而是注意力和专注力。通过 Zoho Projects 的自定义函数,我们可以把重复性的工作交给系统,把精力投入到更有价值的决策和创造中。
无论你是刚开始使用 Zoho Projects,还是想进一步挖掘自动化能力,自定义函数都值得一试。
更多实用函数案例,敬请关注 Zoho Projects 开发者社区。你也可以在 Zoho 项目中创建属于自己团队的自动化规则,开启更高效的项目协作之路。
Zoho Projects项目管理软件,深受国内外项目协作团队一致喜爱,Zoho是专业项目管理软件厂商。
欢迎咨询:400-660-8680转841。立即免费体验: https://www.zoho.com.cn/projects/
Zoho Projects项目管理系统是一款SaaS云端项目管理工具,多次荣获项目管理国际大奖。180多个国家的20万+企业在Zoho Projects的帮助下,管理项目进度、分配任务、制作甘特图、计算工时等,加强团队协作能力,保障项目成功交付。