// TODO: Please create a connection for the Zoho Projects service with the scopes "ZohoProjects.tasks.READ, ZohoProjects.projects.READ, ZohoProjects.tasks.UPDATE". Replace 'xxxxxxxxx' with the connection name. Click this link below to learn how to create the connection. // Link -
https://help.zoho.com/portal/en/kb/projects/integration/connections/articles/connections-23-5-2022#How_to_establish_a_Connection
// TODO: Replace the param value with the status name statusNameTobeChanged = "Reopen"; projectsAPIEndPoint = "
https://projectsapi.zoho.com/restapi";
isPredecessorOpen = false; taskDetails = zoho.projects.getRecordById(portalId,projectId,"tasks",taskId,"xxxxxxxxx"); info taskDetails; info "-------------------------------------"; if(taskDetails != null && taskDetails.get("tasks") != null) { taskInfo = taskDetails.get("tasks").get(0); if(taskInfo != null && taskInfo.contains("dependency") && taskInfo.get("dependency").contains("predecessor")) { taskpredecessor = taskInfo.get("dependency").get("predecessor"); info taskpredecessor; info "-------------------------------------"; if(taskpredecessor.size() > 0) { taskLayoutDetails = invokeurl [ url :projectsAPIEndPoint + "/portal/" + portalId + "/projects/" + projectId + "/tasklayouts" type :GET connection:"proj" ]; info taskLayoutDetails; info "-------------------------------------"; statusNamevsIdMap = Map(); if(taskLayoutDetails != null && taskLayoutDetails.get("status_details") != null) { statusDetails = taskLayoutDetails.get("status_details"); for each status in statusDetails { statusNamevsIdMap.put(status.get("name"),status.get("id")); } } } info "Status NamevsId Map: " + statusNamevsIdMap; if(taskpredecessor.size() > 0) { nextPredecessorIds = taskpredecessor; maxIterations = [1,2,3,4,5,6,7,8,9,10]; for each currIndex in maxIterations{ info "----------------(level:"+currIndex+")---------------------"; if(nextPredecessorIds.size() == 0){ info "Predecessor not found"; break; } info "Level:"+currIndex+", Next Predecessor Ids:"+nextPredecessorIds; taskpredecessor = nextPredecessorIds; nextPredecessorIds = []; for each predecessorId in taskpredecessor { updateTaskParameter = Map(); updateTaskParameter.put("custom_status",statusNamevsIdMap.get(statusNameTobeChanged)); info "updateTaskParameter: " + updateTaskParameter; taskDetails = zoho.projects.update(portalId,projectId,"Tasks",predecessorId,updateTaskParameter,"xxxxxxxxx"); if(taskDetails != null && taskDetails.contains("tasks")){ taskInfo = taskDetails.get("tasks").get(0); info taskInfo.get("name") +" has updated"; if(taskInfo != null && taskInfo.contains("dependency") && taskInfo.get("dependency").contains("predecessor")) { nextPredecessorIds.addAll(taskInfo.get("dependency").get("predecessor")); } } } } } } } return "success"; // TODO: Please create a connection for the Zoho Projects service with the scopes "ZohoProjects.tasks.READ, ZohoProjects.projects.READ, ZohoProjects.tasks.UPDATE". Replace 'xxxxxxxxx' with the connection name. Click this link below to learn how to create the connection. // Link -
Writer is a powerful online word processor, designed for collaborative work.