Zoho Projects自动化:状态变更时自动创建依赖任务

在 Zoho Projects 中,您可以设置当任务状态更新时自动创建并分配依赖任务。这有助于团队保持步调一致,确保审核按时完成,并减少人工操作。

本文将介绍如何使用 Deluge 脚本编写的自定义函数轻松完成设置。

用例

例如,当审计员安排一项需要合规性审核的任务时,一旦任务状态从"已安排"更新,系统将自动创建一个依赖任务并将其分配给合规团队。所有相关附件都会自动同步,确保审计员和审核员能够全面了解任务内容,无需手动协调即可继续进行。

要配置此流程,请执行以下操作:

  1. 导航至页面右上角,点击 → 开发者空间 → 连接 → 使用以下范围创建连接:
  • ZohoProjects.portals.READ

  • ZohoProjects.portals.ALL

  • ZohoProjects.projects.READ

  • ZohoProjects.tasks.CREATE

  • ZohoProjects.tasks.UPDATE

  • ZohoProjects.tasks.READ

  • WorkDrive.workspace.ALL

  • WorkDrive.files.ALL

  • ZohoProjects.documents.READ

  • ZohoProjects.documents.CREATE

  1. 导航至 → 开发者空间 → 自定义函数。在"任务"选项卡下,创建一个新的自定义函数,并添加以下 Deluge 脚本。

请确保门户 URL 与您的数据中心一致。否则,该功能可能无法按预期执行。此外,请确保指定的团队已关联到该项目;否则,任务分配将失败。

// TODO : Replace Dependency Type here with "FS, SS, SF, FF"

  1. // scopes: ZohoProjects.portals.READ, ZohoProjects.portals.CREATE, ZohoProjects.projects.READ, ZohoProjects.tasks.CREATE, ZohoProjects.tasks.UPDATE, ZohoProjects.tasks.READ, WorkDrive.workspace.ALL, WorkDrive.files.ALL, ZohoProjects.documents.READ, ZohoProjects.documents.CREATE.

  2. // get team id

  3. endPoint = "https://projects.zoho.in/restapi/portal/";

  4. endPointV3 = "https://projects.zoho.in/api/v3/portal/";

  5. getTaskStatusTimeline = invokeurl

  6. type :GET

  7. connection:"connectionprojects"

  8. ];

  9. size = getTaskStatusTimeline.size() - 1;

  10. oldStatusName = getTaskStatusTimeline.get(size).get("previous_status").get("name");

  11. if(oldStatusName.containsIgnoreCase("Scheduled"))

  12. {

  13. teamName = "Compliance Team";

  14. userGroupsResponse = invokeurl

  15. type :GET

  16. connection:"connectionprojects"

  17. ];

  18. teams = userGroupsResponse.get("userGroups");

  19. for each team in teams

  20. {

  21. if(team.get("groupObj").get("group_name").containsIgnoreCase(teamName))

  22. {

  23. teamId = team.get("groupObj").get("group_id");

  24. }

  25. }

  26. teamIds = List();

  27. teamIds.add(teamId);

  28. dependencyType = "FS";

  29. //Create Tasks parameters

  30. values_map = Map();

  31. values_map.put("name","Compliance Audit Verification");

  32. values_map.put("description"," Review task created for the Security and Compliance team to validate requirements, assess risks, and confirm adherence to defined standards. Attachments from the originating task are included for reference.");

  33. values_map.put("associated_teams",teamIds);

  34. //Invoke Create Task

  35. createTaskResponse = zoho.projects.create(portalId,projectId,"tasks",values_map,"connectionprojects");

  36. // Get TaskId From Task response

  37. if(createTaskResponse != null && createTaskResponse.get("tasks") != null)

  38. {

  39. taskInfo = createTaskResponse.get("tasks").get(0);

  40. newTaskId = taskInfo.get("id_string");

  41. // copy attachments to new task

  42. getAttachmentsResponse = invokeurl

  43. type :GET

  44. connection:"connectionprojects"

  45. ];

  46. if(getAttachmentsResponse.get("attachment").size() > 0)

  47. {

  48. taskAttachments = getAttachmentsResponse.get("attachment");

  49. for each attachment in taskAttachments

  50. {

  51. associateParam = Map();

  52. associateParam.put("entity_type","task");

  53. associateParam.put("entity_id",newTaskId);

  54. associateToTaskComment = invokeurl

  55. type :POST

  56. parameters:associateParam

  57. connection:"connectionprojects"

  58. ];

  59. }

  60. }

  61. //Add Dependancy Between Tasks Parameter

  62. dependencyParam = Map();

  63. dependencyParam.put("taskid",newTaskId);

  64. dependencyParam.put("predids",taskId);

  65. dependencyParam.put("projId",projectId);

  66. dependencyParam.put("toupdate","dependencyset");

  67. dependencyParam.put("childprojId",projectId);

  68. dependencyParam.put("dependencytype",dependencyType);

  69. // invoke task dependency Api

  70. dependency = invokeurl

  71. type :POST

  72. parameters:dependencyParam

  73. connection:"connectionprojects"

  74. ];

  75. info dependency;

  76. info "-------------------------------------";

  77. }

  78. }

  79. return "success";

根据需要自定义第 36 行和第 37 行中的任务名称和描述,然后保存函数。

将 Deluge 文件中第 10、21、51 和 84 行中的"connectionprojects"替换为您的 Zoho Projects 连接名称。

  1. 配置时添加以下参数。

    完成参数映射后,保存函数并在提示时输入任务 ID。此自定义函数将在问题状态从"已安排"更改为其他状态时自动执行,并根据工作流规则创建依赖任务。

  2. 保存自定义函数后,导航至 → 自动化 → 工作流规则 → 项目选项卡 → 新建工作流规则,并使用以下设置。

  3. 配置工作流,使其在任务更新时根据用户操作触发,并将自定义函数关联起来,以便在状态更改时自动执行。

有了这种自动化机制,任务会自动触发,依赖关系会自动分配,支持附件也会自动传输,从而确保无需人工干预即可完成交接。

相关推荐
夕除1 小时前
js-20
开发语言·javascript·windows
heimeiyingwang2 小时前
Chroma(轻量级向量数据库) 与 MongoDB(文档型 NoSQL 数据库) 的细节拆解
数据库·mongodb·nosql
ruxshui2 小时前
# Linux diff命令使用
linux·运维·服务器
宇擎智脑科技2 小时前
SurrealDB:面向AI原生应用的新一代多模型数据库深度解析
数据库·人工智能·ai-native
Sheffield2 小时前
为什么大家都用iptables,不愿碰原生firewalld?
linux·运维·安全
IT_Octopus2 小时前
AI 工程 生产级别 向量数据库 Milvus 部署架构&多租户方案&节点流程简单总结
数据库·架构·milvus
xuzhiqiang07242 小时前
【Flask】四、flask连接并操作数据库
数据库·python·flask
Coisinilove2 小时前
数通第三次培训
网络·windows·数通数据通信
何中应2 小时前
Jenkins构建完,jar包启动不起来?
linux·运维·jenkins