// Full Google Apps Script (Code.
gs) with Edit & Delete Popup Functionality
function onOpen() {
let ui = [Link]();
[Link]("Task Manager")
.addItem("Open Task Sidebar", "openTaskSidebar")
.addItem("Open Edit/Delete Popup", "openPopup")
.addToUi();
}
function openTaskSidebar() {
let html = [Link]("Sidebar")
.setTitle("Task Manager")
.setWidth(300);
[Link]().showSidebar(html);
}
function openPopup() {
let html = [Link]("Popup")
.setWidth(400)
.setHeight(400);
[Link]().showModalDialog(html, "Edit/Delete Task");
}
function getTasksForPopup() {
let sheet = [Link]().getSheetByName("Tasks");
let data = [Link]().getValues();
let tasks = [];
for (let i = 1; i < [Link]; i++) {
[Link]({ id: data[i][0], name: data[i][1], assignedTo: data[i][2], status:
data[i][3], timeline: data[i][4], approvalReq: data[i][5] });
}
return tasks;
}
function updateTask(taskId, updatedData) {
let sheet = [Link]().getSheetByName("Tasks");
let data = [Link]().getValues();
for (let i = 1; i < [Link]; i++) {
if (data[i][0] == taskId) {
[Link](i + 1, 2, 1, [Link]).setValues([updatedData]);
syncTaskWithAssigneeSheet(taskId, updatedData);
break;
}
}
}
function deleteTasks(taskIds) {
let sheet = [Link]().getSheetByName("Tasks");
let data = [Link]().getValues();
for (let i = [Link] - 1; i > 0; i--) {
if ([Link](data[i][0])) {
[Link](i + 1);
}
}
}
function syncTaskWithAssigneeSheet(taskId, updatedData) {
let ss = [Link]();
let mainSheet = [Link]("Tasks");
let data = [Link]().getValues();
let assignee = updatedData[0];
let assigneeSheet = [Link](assignee);
if (!assigneeSheet) {
assigneeSheet = [Link](assignee);
[Link](["Task ID", "Task Name", "Assigned To", "Status",
"Timeline", "Approval Req"]);
}
for (let i = 1; i < [Link]; i++) {
if (data[i][0] == taskId) {
let row = [Link]().getValues().findIndex(r => r[0] ==
taskId) + 1;
if (row > 0) {
[Link](row, 2, 1,
[Link]).setValues([updatedData]);
}
break;
}
}
}
function getAssignees() {
let sheet = [Link]().getSheetByName("Assignees");
return [Link]("A2:A").getValues().flat().filter(String);
}