
在 Zoho Projects 中,您可以设置当任务状态更新时自动创建并分配依赖任务。这有助于团队保持步调一致,确保审核按时完成,并减少人工操作。
本文将介绍如何使用 Deluge 脚本编写的自定义函数轻松完成设置。
用例
例如,当审计员安排一项需要合规性审核的任务时,一旦任务状态从"已安排"更新,系统将自动创建一个依赖任务并将其分配给合规团队。所有相关附件都会自动同步,确保审计员和审核员能够全面了解任务内容,无需手动协调即可继续进行。
要配置此流程,请执行以下操作:
- 导航至页面右上角,点击
→ 开发者空间 → 连接 → 使用以下范围创建连接:
-
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

- 导航至
→ 开发者空间 → 自定义函数。在"任务"选项卡下,创建一个新的自定义函数,并添加以下 Deluge 脚本。
请确保门户 URL 与您的数据中心一致。否则,该功能可能无法按预期执行。此外,请确保指定的团队已关联到该项目;否则,任务分配将失败。
// TODO : Replace Dependency Type here with "FS, SS, SF, FF"
-
// 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.
-
// get team id
-
endPoint = "https://projects.zoho.in/restapi/portal/";
-
endPointV3 = "https://projects.zoho.in/api/v3/portal/";
-
getTaskStatusTimeline = invokeurl
-
-
type :GET
-
connection:"connectionprojects"
-
];
-
size = getTaskStatusTimeline.size() - 1;
-
oldStatusName = getTaskStatusTimeline.get(size).get("previous_status").get("name");
-
if(oldStatusName.containsIgnoreCase("Scheduled"))
-
{
-
teamName = "Compliance Team";
-
userGroupsResponse = invokeurl
-
-
type :GET
-
connection:"connectionprojects"
-
];
-
teams = userGroupsResponse.get("userGroups");
-
for each team in teams
-
{
-
if(team.get("groupObj").get("group_name").containsIgnoreCase(teamName))
-
{
-
teamId = team.get("groupObj").get("group_id");
-
}
-
}
-
teamIds = List();
-
teamIds.add(teamId);
-
dependencyType = "FS";
-
//Create Tasks parameters
-
values_map = Map();
-
values_map.put("name","Compliance Audit Verification");
-
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.");
-
values_map.put("associated_teams",teamIds);
-
//Invoke Create Task
-
createTaskResponse = zoho.projects.create(portalId,projectId,"tasks",values_map,"connectionprojects");
-
// Get TaskId From Task response
-
if(createTaskResponse != null && createTaskResponse.get("tasks") != null)
-
{
-
taskInfo = createTaskResponse.get("tasks").get(0);
-
newTaskId = taskInfo.get("id_string");
-
// copy attachments to new task
-
getAttachmentsResponse = invokeurl
-
-
type :GET
-
connection:"connectionprojects"
-
];
-
if(getAttachmentsResponse.get("attachment").size() > 0)
-
{
-
taskAttachments = getAttachmentsResponse.get("attachment");
-
for each attachment in taskAttachments
-
{
-
associateParam = Map();
-
associateParam.put("entity_type","task");
-
associateParam.put("entity_id",newTaskId);
-
associateToTaskComment = invokeurl
-
-
type :POST
-
parameters:associateParam
-
connection:"connectionprojects"
-
];
-
}
-
}
-
//Add Dependancy Between Tasks Parameter
-
dependencyParam = Map();
-
dependencyParam.put("taskid",newTaskId);
-
dependencyParam.put("predids",taskId);
-
dependencyParam.put("projId",projectId);
-
dependencyParam.put("toupdate","dependencyset");
-
dependencyParam.put("childprojId",projectId);
-
dependencyParam.put("dependencytype",dependencyType);
-
// invoke task dependency Api
-
dependency = invokeurl
-
-
type :POST
-
parameters:dependencyParam
-
connection:"connectionprojects"
-
];
-
info dependency;
-
info "-------------------------------------";
-
}
-
}
-
return "success";
根据需要自定义第 36 行和第 37 行中的任务名称和描述,然后保存函数。
将 Deluge 文件中第 10、21、51 和 84 行中的"connectionprojects"替换为您的 Zoho Projects 连接名称。
-
配置时添加以下参数。
完成参数映射后,保存函数并在提示时输入任务 ID。此自定义函数将在问题状态从"已安排"更改为其他状态时自动执行,并根据工作流规则创建依赖任务。
-
保存自定义函数后,导航至
→ 自动化 → 工作流规则 → 项目选项卡 → 新建工作流规则,并使用以下设置。 -
配置工作流,使其在任务更新时根据用户操作触发,并将自定义函数关联起来,以便在状态更改时自动执行。

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