{"id":634,"date":"2026-09-15T16:24:00","date_gmt":"2026-09-15T16:24:00","guid":{"rendered":"https:\/\/kalhonaho.online\/?page_id=634"},"modified":"2026-09-16T01:08:01","modified_gmt":"2026-09-16T01:08:01","slug":"pgp-16-ga","status":"publish","type":"page","link":"https:\/\/kalhonaho.online\/?page_id=634","title":{"rendered":"PGP 16 &#8211; GA"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"634\" class=\"elementor elementor-634\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5887107 e-con e-atomic-element e-flexbox-base e-541e03d \" data-id=\"5887107\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"5887107\">\n    \t\t<div class=\"elementor-element elementor-element-051b580 elementor-widget elementor-widget-html\" data-id=\"051b580\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n\r\n<title>PGP 16 | Capstone Project 1 | Google Ads<\/title>\r\n\r\n<style>\r\n:root{\r\n    --blue:#0756b9;\r\n    --blue2:#0b68d1;\r\n    --navy:#082b55;\r\n    --light:#f4f8fd;\r\n    --border:#dce6f1;\r\n    --text:#10233f;\r\n    --muted:#718096;\r\n    --green:#16834a;\r\n    --orange:#e88916;\r\n    --red:#d43b3b;\r\n    --white:#fff;\r\n    --shadow:0 10px 30px rgba(8,55,110,.08);\r\n}\r\n\r\n*{\r\n    box-sizing:border-box;\r\n}\r\n\r\nhtml{\r\n    scroll-behavior:smooth;\r\n}\r\n\r\nbody{\r\n    margin:0;\r\n    font-family:Arial,Helvetica,sans-serif;\r\n    background:#f5f8fc;\r\n    color:var(--text);\r\n}\r\n\r\nbutton,\r\ninput,\r\ntextarea,\r\nselect{\r\n    font-family:inherit;\r\n}\r\n\r\n.container{\r\n    width:min(1180px,94%);\r\n    margin:auto;\r\n}\r\n\r\n\/* HEADER *\/\r\n\r\n.header{\r\n    background:linear-gradient(135deg,#064da8,#0867cf);\r\n    color:#fff;\r\n    padding:22px 0;\r\n    position:sticky;\r\n    top:0;\r\n    z-index:100;\r\n    box-shadow:0 5px 25px rgba(0,0,0,.12);\r\n}\r\n\r\n.header-inner{\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    gap:25px;\r\n}\r\n\r\n.logo{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:13px;\r\n}\r\n\r\n.logo-mark{\r\n    width:55px;\r\n    height:55px;\r\n    border-radius:14px;\r\n    background:#fff;\r\n    color:var(--blue);\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    font-size:22px;\r\n    font-weight:900;\r\n}\r\n\r\n.digital{\r\n    font-size:21px;\r\n    font-weight:900;\r\n    line-height:18px;\r\n}\r\n\r\n.nest{\r\n    font-size:30px;\r\n    font-weight:900;\r\n    letter-spacing:-2px;\r\n    line-height:28px;\r\n}\r\n\r\n.logo small{\r\n    display:block;\r\n    font-size:9px;\r\n    letter-spacing:1px;\r\n    margin-top:5px;\r\n    padding-top:4px;\r\n    border-top:1px solid rgba(255,255,255,.65);\r\n}\r\n\r\n.project-title{\r\n    text-align:right;\r\n}\r\n\r\n.project-title h1{\r\n    margin:0;\r\n    font-size:21px;\r\n}\r\n\r\n.project-title p{\r\n    margin:6px 0 0;\r\n    font-size:12px;\r\n    opacity:.85;\r\n}\r\n\r\n\/* HERO *\/\r\n\r\n.hero{\r\n    padding:32px 0 20px;\r\n}\r\n\r\n.hero-card{\r\n    background:#fff;\r\n    border:1px solid var(--border);\r\n    border-radius:20px;\r\n    padding:32px;\r\n    box-shadow:var(--shadow);\r\n}\r\n\r\n.badge{\r\n    display:inline-block;\r\n    background:#eaf3ff;\r\n    color:var(--blue);\r\n    border-radius:30px;\r\n    padding:7px 12px;\r\n    font-size:11px;\r\n    font-weight:900;\r\n    margin-bottom:12px;\r\n}\r\n\r\n.hero h2{\r\n    margin:0 0 10px;\r\n    font-size:32px;\r\n    letter-spacing:-.5px;\r\n}\r\n\r\n.hero p{\r\n    color:var(--muted);\r\n    line-height:1.7;\r\n    max-width:900px;\r\n    margin:0;\r\n}\r\n\r\n\/* CARDS *\/\r\n\r\n.card{\r\n    background:#fff;\r\n    border:1px solid var(--border);\r\n    border-radius:18px;\r\n    padding:25px;\r\n    box-shadow:var(--shadow);\r\n    margin-bottom:25px;\r\n}\r\n\r\n.card-title{\r\n    display:flex;\r\n    justify-content:space-between;\r\n    align-items:center;\r\n    gap:15px;\r\n    margin-bottom:20px;\r\n}\r\n\r\n.card-title h2{\r\n    margin:0;\r\n    font-size:20px;\r\n}\r\n\r\n.card-title span{\r\n    color:var(--muted);\r\n    font-size:11px;\r\n}\r\n\r\n\/* FORMS *\/\r\n\r\n.form-grid{\r\n    display:grid;\r\n    grid-template-columns:repeat(2,1fr);\r\n    gap:15px;\r\n}\r\n\r\n.field{\r\n    display:flex;\r\n    flex-direction:column;\r\n    gap:7px;\r\n}\r\n\r\n.field.full{\r\n    grid-column:1\/-1;\r\n}\r\n\r\n.field label{\r\n    font-size:12px;\r\n    font-weight:800;\r\n}\r\n\r\n.field input,\r\n.field textarea,\r\n.field select{\r\n    width:100%;\r\n    padding:12px 13px;\r\n    border:1px solid var(--border);\r\n    border-radius:10px;\r\n    outline:none;\r\n    background:#fff;\r\n    color:var(--text);\r\n}\r\n\r\n.field input:focus,\r\n.field textarea:focus,\r\n.field select:focus{\r\n    border-color:var(--blue);\r\n    box-shadow:0 0 0 3px rgba(7,86,185,.08);\r\n}\r\n\r\n.field textarea{\r\n    min-height:95px;\r\n    resize:vertical;\r\n}\r\n\r\n\/* MEMBERS *\/\r\n\r\n.members{\r\n    display:grid;\r\n    grid-template-columns:1fr 1fr;\r\n    gap:10px;\r\n}\r\n\r\n.member{\r\n    display:grid;\r\n    grid-template-columns:1fr 140px;\r\n    gap:8px;\r\n}\r\n\r\n\/* BUTTONS *\/\r\n\r\n.actions{\r\n    display:flex;\r\n    flex-wrap:wrap;\r\n    gap:10px;\r\n    margin-top:20px;\r\n}\r\n\r\n.btn{\r\n    border:0;\r\n    padding:12px 18px;\r\n    border-radius:10px;\r\n    font-weight:900;\r\n    cursor:pointer;\r\n    transition:.2s;\r\n}\r\n\r\n.btn:hover{\r\n    transform:translateY(-1px);\r\n}\r\n\r\n.btn-primary{\r\n    background:var(--blue);\r\n    color:#fff;\r\n}\r\n\r\n.btn-green{\r\n    background:var(--green);\r\n    color:#fff;\r\n}\r\n\r\n.btn-dark{\r\n    background:var(--navy);\r\n    color:#fff;\r\n}\r\n\r\n.btn-light{\r\n    background:#edf4fc;\r\n    color:var(--blue);\r\n}\r\n\r\n\/* TEAM STATUS *\/\r\n\r\n.team-info{\r\n    display:none;\r\n    margin-top:20px;\r\n    background:#edf7ff;\r\n    border:1px solid #cfe3f7;\r\n    border-radius:12px;\r\n    padding:18px;\r\n}\r\n\r\n.team-info.show{\r\n    display:block;\r\n}\r\n\r\n.team-grid{\r\n    display:grid;\r\n    grid-template-columns:repeat(4,1fr);\r\n    gap:15px;\r\n}\r\n\r\n.info small{\r\n    display:block;\r\n    font-size:10px;\r\n    color:var(--muted);\r\n    margin-bottom:5px;\r\n    font-weight:800;\r\n}\r\n\r\n.info strong{\r\n    font-size:13px;\r\n}\r\n\r\n\/* STATS *\/\r\n\r\n.stats{\r\n    display:grid;\r\n    grid-template-columns:repeat(5,1fr);\r\n    gap:14px;\r\n    margin:25px 0;\r\n}\r\n\r\n.stat{\r\n    background:#fff;\r\n    border:1px solid var(--border);\r\n    border-radius:15px;\r\n    padding:18px;\r\n    box-shadow:var(--shadow);\r\n}\r\n\r\n.stat small{\r\n    display:block;\r\n    color:var(--muted);\r\n    font-size:10px;\r\n    font-weight:800;\r\n    margin-bottom:8px;\r\n}\r\n\r\n.stat strong{\r\n    font-size:24px;\r\n}\r\n\r\n\/* PROGRESS *\/\r\n\r\n.progress-card{\r\n    background:#fff;\r\n    border:1px solid var(--border);\r\n    border-radius:18px;\r\n    padding:22px;\r\n    box-shadow:var(--shadow);\r\n    margin-bottom:25px;\r\n}\r\n\r\n.progress-top{\r\n    display:flex;\r\n    justify-content:space-between;\r\n    align-items:center;\r\n}\r\n\r\n.progress-top h3{\r\n    margin:0;\r\n}\r\n\r\n.progress-bar{\r\n    height:13px;\r\n    background:#e7eef6;\r\n    border-radius:30px;\r\n    overflow:hidden;\r\n    margin-top:15px;\r\n}\r\n\r\n.progress-fill{\r\n    height:100%;\r\n    width:0;\r\n    background:linear-gradient(90deg,#0756b9,#2585e5);\r\n    transition:.4s;\r\n}\r\n\r\n\/* TASK SECTION *\/\r\n\r\n.task-section{\r\n    background:#fff;\r\n    border:1px solid var(--border);\r\n    border-radius:18px;\r\n    overflow:hidden;\r\n    box-shadow:var(--shadow);\r\n    margin-bottom:20px;\r\n}\r\n\r\n.task-header{\r\n    padding:20px 22px;\r\n    background:#f7faff;\r\n    border-bottom:1px solid var(--border);\r\n    display:flex;\r\n    align-items:center;\r\n    gap:14px;\r\n}\r\n\r\n.section-number{\r\n    width:43px;\r\n    height:43px;\r\n    flex:none;\r\n    display:flex;\r\n    justify-content:center;\r\n    align-items:center;\r\n    border-radius:50%;\r\n    background:var(--blue);\r\n    color:#fff;\r\n    font-weight:900;\r\n}\r\n\r\n.task-header h3{\r\n    margin:0;\r\n    font-size:18px;\r\n}\r\n\r\n.task-header p{\r\n    margin:5px 0 0;\r\n    font-size:11px;\r\n    color:var(--muted);\r\n}\r\n\r\n.section-count{\r\n    margin-left:auto;\r\n    font-size:11px;\r\n    font-weight:900;\r\n    color:var(--blue);\r\n}\r\n\r\n.task{\r\n    display:flex;\r\n    align-items:flex-start;\r\n    gap:14px;\r\n    padding:16px 22px;\r\n    border-bottom:1px dashed var(--border);\r\n}\r\n\r\n.task:last-child{\r\n    border-bottom:0;\r\n}\r\n\r\n.task:hover{\r\n    background:#fbfdff;\r\n}\r\n\r\n.task-checkbox{\r\n    appearance:none;\r\n    width:22px;\r\n    height:22px;\r\n    border:2px solid #98a9bd;\r\n    border-radius:5px;\r\n    margin:1px 0 0;\r\n    flex:none;\r\n    cursor:pointer;\r\n    position:relative;\r\n}\r\n\r\n.task-checkbox:checked{\r\n    background:var(--blue);\r\n    border-color:var(--blue);\r\n}\r\n\r\n.task-checkbox:checked:after{\r\n    content:\"\u2713\";\r\n    color:#fff;\r\n    font-size:15px;\r\n    font-weight:900;\r\n    position:absolute;\r\n    left:3px;\r\n    top:-2px;\r\n}\r\n\r\n.task-content{\r\n    flex:1;\r\n}\r\n\r\n.task-title{\r\n    font-size:14px;\r\n    font-weight:800;\r\n}\r\n\r\n.task-description{\r\n    color:var(--muted);\r\n    font-size:11px;\r\n    margin-top:5px;\r\n    line-height:1.5;\r\n}\r\n\r\n.task-id{\r\n    background:#edf4fc;\r\n    color:var(--blue);\r\n    border-radius:5px;\r\n    padding:4px 7px;\r\n    font-size:9px;\r\n    font-weight:900;\r\n    white-space:nowrap;\r\n}\r\n\r\n.task.completed{\r\n    background:#fbfffc;\r\n}\r\n\r\n.task.completed .task-title{\r\n    color:#8491a1;\r\n    text-decoration:line-through;\r\n}\r\n\r\n\/* FINAL SUBMISSION *\/\r\n\r\n.final{\r\n    border:2px solid #c9def5;\r\n    background:linear-gradient(180deg,#fff,#f8fbff);\r\n}\r\n\r\n.final-note{\r\n    background:#edf6ff;\r\n    border-left:4px solid var(--blue);\r\n    padding:14px;\r\n    border-radius:8px;\r\n    margin-bottom:20px;\r\n    font-size:12px;\r\n    line-height:1.6;\r\n}\r\n\r\n\/* EOD *\/\r\n\r\n.eod{\r\n    margin-top:30px;\r\n}\r\n\r\n\/* TOAST *\/\r\n\r\n.toast{\r\n    position:fixed;\r\n    right:22px;\r\n    bottom:22px;\r\n    z-index:999;\r\n    background:#10233f;\r\n    color:#fff;\r\n    border-radius:10px;\r\n    padding:13px 17px;\r\n    font-size:12px;\r\n    font-weight:700;\r\n    opacity:0;\r\n    transform:translateY(20px);\r\n    pointer-events:none;\r\n    transition:.3s;\r\n    max-width:360px;\r\n}\r\n\r\n.toast.show{\r\n    opacity:1;\r\n    transform:translateY(0);\r\n}\r\n\r\n\/* LOADING *\/\r\n\r\n.loading{\r\n    position:fixed;\r\n    inset:0;\r\n    background:rgba(255,255,255,.75);\r\n    z-index:998;\r\n    display:none;\r\n    align-items:center;\r\n    justify-content:center;\r\n}\r\n\r\n.loading.show{\r\n    display:flex;\r\n}\r\n\r\n.loading-box{\r\n    background:#fff;\r\n    border-radius:14px;\r\n    padding:25px 35px;\r\n    box-shadow:0 15px 50px rgba(0,0,0,.15);\r\n    text-align:center;\r\n    font-weight:800;\r\n    color:var(--blue);\r\n}\r\n\r\n\/* FOOTER *\/\r\n\r\n.footer{\r\n    background:#092f62;\r\n    color:#fff;\r\n    margin-top:45px;\r\n    padding:30px 0;\r\n}\r\n\r\n.footer-inner{\r\n    display:flex;\r\n    justify-content:space-between;\r\n    gap:20px;\r\n}\r\n\r\n.footer small{\r\n    opacity:.75;\r\n}\r\n\r\n\/* MOBILE *\/\r\n\r\n@media(max-width:900px){\r\n\r\n    .stats{\r\n        grid-template-columns:repeat(2,1fr);\r\n    }\r\n\r\n    .team-grid{\r\n        grid-template-columns:repeat(2,1fr);\r\n    }\r\n\r\n    .members{\r\n        grid-template-columns:1fr;\r\n    }\r\n\r\n}\r\n\r\n@media(max-width:650px){\r\n\r\n    .header-inner{\r\n        flex-direction:column;\r\n        align-items:flex-start;\r\n    }\r\n\r\n    .project-title{\r\n        text-align:left;\r\n    }\r\n\r\n    .form-grid{\r\n        grid-template-columns:1fr;\r\n    }\r\n\r\n    .field.full{\r\n        grid-column:auto;\r\n    }\r\n\r\n    .stats{\r\n        grid-template-columns:1fr 1fr;\r\n    }\r\n\r\n    .team-grid{\r\n        grid-template-columns:1fr;\r\n    }\r\n\r\n    .hero-card{\r\n        padding:22px;\r\n    }\r\n\r\n    .hero h2{\r\n        font-size:25px;\r\n    }\r\n\r\n    .card{\r\n        padding:18px;\r\n    }\r\n\r\n    .task{\r\n        padding:15px;\r\n    }\r\n\r\n    .task-header{\r\n        padding:17px 15px;\r\n    }\r\n\r\n    .section-count{\r\n        display:none;\r\n    }\r\n\r\n    .footer-inner{\r\n        flex-direction:column;\r\n    }\r\n\r\n}\r\n\r\n<\/style>\r\n<\/head>\r\n\r\n\r\n<body>\r\n\r\n\r\n<!-- =====================================================\r\n     HEADER\r\n====================================================== -->\r\n\r\n<header class=\"header\">\r\n\r\n<div class=\"container header-inner\">\r\n\r\n<div class=\"logo\">\r\n\r\n<div class=\"logo-mark\">DN<\/div>\r\n\r\n<div>\r\n\r\n<div class=\"digital\">DIGITAL<\/div>\r\n\r\n<div class=\"nest\">nest<\/div>\r\n\r\n<small>SCHOOL OF BUSINESS<\/small>\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"project-title\">\r\n\r\n<h1>PGP 16 \u2014 Capstone Project 1<\/h1>\r\n\r\n<p>Google Ads \u2022 Performance Marketing \u2022 Analytics<\/p>\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n<\/header>\r\n\r\n\r\n\r\n<main class=\"container\">\r\n\r\n\r\n<!-- =====================================================\r\n     HERO\r\n====================================================== -->\r\n\r\n<section class=\"hero\">\r\n\r\n<div class=\"hero-card\">\r\n\r\n<span class=\"badge\">\r\nPGP 16 \u2022 LIVE CAPSTONE PROJECT\r\n<\/span>\r\n\r\n<h2>\r\nBuild, Launch & Optimize a Complete Google Ads Funnel\r\n<\/h2>\r\n\r\n<p>\r\nWork like a real performance marketing team. Select a brand,\r\nresearch the market, build the funnel, create Search, Display and\r\nYouTube campaigns, configure tracking, launch campaigns, analyze\r\ndata, optimize performance and submit the final project.\r\n<\/p>\r\n\r\n<\/div>\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     TEAM SETUP\r\n====================================================== -->\r\n\r\n<section class=\"card\">\r\n\r\n<div class=\"card-title\">\r\n\r\n<h2>01. Create Your Team<\/h2>\r\n\r\n<span>Required before starting tasks<\/span>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"form-grid\">\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Team Name *<\/label>\r\n\r\n<input\r\nid=\"teamName\"\r\nplaceholder=\"Example: Team Alpha\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Brand Selected *<\/label>\r\n\r\n<input\r\nid=\"brand\"\r\nplaceholder=\"Example: Nykaa\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Project Email ID *<\/label>\r\n\r\n<input\r\nid=\"projectEmail\"\r\ntype=\"email\"\r\nplaceholder=\"teamalpha@gmail.com\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Team Lead *<\/label>\r\n\r\n<input\r\nid=\"teamLead\"\r\nplaceholder=\"Team Lead Name\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>Team Members & Roles<\/label>\r\n\r\n<div class=\"members\">\r\n\r\n\r\n<div class=\"member\">\r\n\r\n<input\r\nid=\"member1\"\r\nplaceholder=\"Member 1\"\r\n\/>\r\n\r\n<select id=\"role1\">\r\n\r\n<option>Team Lead<\/option>\r\n<option>Google Ads<\/option>\r\n<option>Research<\/option>\r\n<option>Tracking<\/option>\r\n<option>CRO<\/option>\r\n<option>Creative<\/option>\r\n<option>Reporting<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"member\">\r\n\r\n<input\r\nid=\"member2\"\r\nplaceholder=\"Member 2\"\r\n\/>\r\n\r\n<select id=\"role2\">\r\n\r\n<option>Google Ads<\/option>\r\n<option>Research<\/option>\r\n<option>Tracking<\/option>\r\n<option>CRO<\/option>\r\n<option>Creative<\/option>\r\n<option>Reporting<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"member\">\r\n\r\n<input\r\nid=\"member3\"\r\nplaceholder=\"Member 3\"\r\n\/>\r\n\r\n<select id=\"role3\">\r\n\r\n<option>Google Ads<\/option>\r\n<option>Research<\/option>\r\n<option>Tracking<\/option>\r\n<option>CRO<\/option>\r\n<option>Creative<\/option>\r\n<option>Reporting<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"member\">\r\n\r\n<input\r\nid=\"member4\"\r\nplaceholder=\"Member 4\"\r\n\/>\r\n\r\n<select id=\"role4\">\r\n\r\n<option>Google Ads<\/option>\r\n<option>Research<\/option>\r\n<option>Tracking<\/option>\r\n<option>CRO<\/option>\r\n<option>Creative<\/option>\r\n<option>Reporting<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"actions\">\r\n\r\n<button\r\nclass=\"btn btn-primary\"\r\nonclick=\"createTeam()\"\r\n>\r\nCreate \/ Update Team\r\n<\/button>\r\n\r\n\r\n<button\r\nclass=\"btn btn-light\"\r\nonclick=\"loadTeam()\"\r\n>\r\nLoad Saved Team\r\n<\/button>\r\n\r\n<\/div>\r\n\r\n\r\n<div\r\nid=\"teamInfo\"\r\nclass=\"team-info\"\r\n>\r\n\r\n<div class=\"team-grid\">\r\n\r\n\r\n<div class=\"info\">\r\n\r\n<small>TEAM ID<\/small>\r\n\r\n<strong id=\"displayTeamId\">\u2014<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"info\">\r\n\r\n<small>TEAM<\/small>\r\n\r\n<strong id=\"displayTeamName\">\u2014<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"info\">\r\n\r\n<small>BRAND<\/small>\r\n\r\n<strong id=\"displayBrand\">\u2014<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"info\">\r\n\r\n<small>PROJECT EMAIL<\/small>\r\n\r\n<strong id=\"displayEmail\">\u2014<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     STATS\r\n====================================================== -->\r\n\r\n<section class=\"stats\">\r\n\r\n\r\n<div class=\"stat\">\r\n\r\n<small>TOTAL TASKS<\/small>\r\n\r\n<strong id=\"totalTasks\">\r\n0\r\n<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"stat\">\r\n\r\n<small>COMPLETED<\/small>\r\n\r\n<strong id=\"completedTasks\">\r\n0\r\n<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"stat\">\r\n\r\n<small>PENDING<\/small>\r\n\r\n<strong id=\"pendingTasks\">\r\n0\r\n<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"stat\">\r\n\r\n<small>PROJECT PROGRESS<\/small>\r\n\r\n<strong id=\"progressPercent\">\r\n0%\r\n<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"stat\">\r\n\r\n<small>TEAM ID<\/small>\r\n\r\n<strong id=\"statTeam\">\r\n\u2014\r\n<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     PROGRESS\r\n====================================================== -->\r\n\r\n<section class=\"progress-card\">\r\n\r\n<div class=\"progress-top\">\r\n\r\n<h3>Project Progress<\/h3>\r\n\r\n<strong id=\"progressText\">\r\n0 \/ 0 Tasks\r\n<\/strong>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"progress-bar\">\r\n\r\n<div\r\nid=\"progressFill\"\r\nclass=\"progress-fill\"\r\n><\/div>\r\n\r\n<\/div>\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     TASK CONTAINER\r\n====================================================== -->\r\n\r\n<div id=\"taskContainer\"><\/div>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     EOD REPORT\r\n====================================================== -->\r\n\r\n<section class=\"card eod\">\r\n\r\n<div class=\"card-title\">\r\n\r\n<h2>Daily EOD Report<\/h2>\r\n\r\n<span>Submit at the end of every working day<\/span>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"form-grid\">\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Date<\/label>\r\n\r\n<input\r\ntype=\"date\"\r\nid=\"eodDate\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Tasks Completed Today<\/label>\r\n\r\n<input\r\ntype=\"number\"\r\nid=\"eodCompleted\"\r\nmin=\"0\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Tasks Pending<\/label>\r\n\r\n<input\r\ntype=\"number\"\r\nid=\"eodPending\"\r\nmin=\"0\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Overall Progress %<\/label>\r\n\r\n<input\r\ntype=\"number\"\r\nid=\"eodProgress\"\r\nmin=\"0\"\r\nmax=\"100\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>\r\nWhat did the team complete today?\r\n<\/label>\r\n\r\n<textarea\r\nid=\"eodWork\"\r\nplaceholder=\"Mention the important work completed today...\"\r\n><\/textarea>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>\r\nProblems \/ Blockers\r\n<\/label>\r\n\r\n<textarea\r\nid=\"eodBlockers\"\r\nplaceholder=\"Mention technical, campaign, tracking, creative or other blockers...\"\r\n><\/textarea>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>\r\nTomorrow's Plan\r\n<\/label>\r\n\r\n<textarea\r\nid=\"eodTomorrow\"\r\nplaceholder=\"What will the team work on tomorrow?\"\r\n><\/textarea>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Google Ads Status<\/label>\r\n\r\n<select id=\"googleAdsStatus\">\r\n\r\n<option>Not Started<\/option>\r\n<option>In Progress<\/option>\r\n<option>Ready<\/option>\r\n<option>Launched<\/option>\r\n<option>Optimizing<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Landing Page Status<\/label>\r\n\r\n<select id=\"landingStatus\">\r\n\r\n<option>Not Started<\/option>\r\n<option>In Progress<\/option>\r\n<option>Ready<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Tracking Status<\/label>\r\n\r\n<select id=\"trackingStatus\">\r\n\r\n<option>Not Started<\/option>\r\n<option>In Progress<\/option>\r\n<option>Tested<\/option>\r\n<option>Live<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Creative Status<\/label>\r\n\r\n<select id=\"creativeStatus\">\r\n\r\n<option>Not Started<\/option>\r\n<option>In Progress<\/option>\r\n<option>Ready<\/option>\r\n\r\n<\/select>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>Additional Notes<\/label>\r\n\r\n<textarea\r\nid=\"eodNotes\"\r\nplaceholder=\"Any additional information for trainer...\"\r\n><\/textarea>\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"actions\">\r\n\r\n<button\r\nclass=\"btn btn-green\"\r\nonclick=\"submitEOD()\"\r\n>\r\nSubmit EOD Report\r\n<\/button>\r\n\r\n\r\n<button\r\nclass=\"btn btn-light\"\r\nonclick=\"calculateEOD()\"\r\n>\r\nCalculate Progress\r\n<\/button>\r\n\r\n<\/div>\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     FINAL SUBMISSION\r\n====================================================== -->\r\n\r\n<section class=\"card final\">\r\n\r\n<div class=\"card-title\">\r\n\r\n<h2>Final Capstone Submission<\/h2>\r\n\r\n<span>Submit only after completing the project<\/span>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"final-note\">\r\n\r\n<strong>Final Submission Checklist:<\/strong>\r\n\r\nComplete your Search, Display and YouTube campaigns,\r\ntracking, landing page, reporting dashboard, optimization\r\nchecklist and five Google Ads scripts before submitting.\r\n\r\nYour submission will be saved to the\r\n<strong>Final Submissions<\/strong> Google Sheet.\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"form-grid\">\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Final Project Progress %<\/label>\r\n\r\n<input\r\nid=\"finalProgress\"\r\ntype=\"number\"\r\nmin=\"0\"\r\nmax=\"100\"\r\nplaceholder=\"100\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Final Project URL<\/label>\r\n\r\n<input\r\nid=\"finalProjectUrl\"\r\nplaceholder=\"https:\/\/...\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Search Campaign URL<\/label>\r\n\r\n<input\r\nid=\"searchCampaignUrl\"\r\nplaceholder=\"Google Ads campaign \/ screenshot \/ document URL\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Display Campaign URL<\/label>\r\n\r\n<input\r\nid=\"displayCampaignUrl\"\r\nplaceholder=\"Google Ads campaign \/ screenshot \/ document URL\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>YouTube Campaign URL<\/label>\r\n\r\n<input\r\nid=\"youtubeCampaignUrl\"\r\nplaceholder=\"Google Ads campaign \/ screenshot \/ document URL\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Landing Page URL<\/label>\r\n\r\n<input\r\nid=\"landingPageUrl\"\r\nplaceholder=\"https:\/\/...\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Google Sheet Report URL<\/label>\r\n\r\n<input\r\nid=\"googleSheetReportUrl\"\r\nplaceholder=\"https:\/\/docs.google.com\/spreadsheets\/...\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Presentation URL<\/label>\r\n\r\n<input\r\nid=\"presentationUrl\"\r\nplaceholder=\"Google Drive \/ Canva \/ PPT URL\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field\">\r\n\r\n<label>Drive Folder URL<\/label>\r\n\r\n<input\r\nid=\"driveFolderUrl\"\r\nplaceholder=\"Google Drive folder\"\r\n>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>Key Learnings<\/label>\r\n\r\n<textarea\r\nid=\"keyLearnings\"\r\nplaceholder=\"What did your team learn from the project?\"\r\n><\/textarea>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>Challenges Faced<\/label>\r\n\r\n<textarea\r\nid=\"challenges\"\r\nplaceholder=\"Mention major technical, campaign, tracking or strategy challenges...\"\r\n><\/textarea>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"field full\">\r\n\r\n<label>Final Notes<\/label>\r\n\r\n<textarea\r\nid=\"finalNotes\"\r\nplaceholder=\"Any final information for the trainer...\"\r\n><\/textarea>\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<div class=\"actions\">\r\n\r\n<button\r\nclass=\"btn btn-dark\"\r\nonclick=\"submitFinal()\"\r\n>\r\nSubmit Final Capstone Project\r\n<\/button>\r\n\r\n<\/div>\r\n\r\n<\/section>\r\n\r\n\r\n<\/main>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     FOOTER\r\n====================================================== -->\r\n\r\n<footer class=\"footer\">\r\n\r\n<div class=\"container footer-inner\">\r\n\r\n<div>\r\n\r\n<strong>\r\nDigital Nest School of Business\r\n<\/strong>\r\n\r\n<br>\r\n\r\n<small>\r\nPGP 16 \u2022 Capstone Project 1 \u2022 Google Ads\r\n<\/small>\r\n\r\n<\/div>\r\n\r\n\r\n<div>\r\n\r\n<small>\r\nLearn \u2022 Create \u2022 Market\r\n<\/small>\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n<\/footer>\r\n\r\n\r\n\r\n<!-- =====================================================\r\n     LOADING\r\n====================================================== -->\r\n\r\n<div\r\nid=\"loading\"\r\nclass=\"loading\"\r\n>\r\n\r\n<div class=\"loading-box\">\r\n\r\nSaving to Google Sheet...\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<div\r\nid=\"toast\"\r\nclass=\"toast\"\r\n><\/div>\r\n\r\n\r\n\r\n<script>\r\n\r\n\/* =====================================================\r\n   GOOGLE APPS SCRIPT WEB APP URL\r\n====================================================== *\/\r\n\r\nconst SCRIPT_URL =\r\n\"https:\/\/script.google.com\/macros\/s\/AKfycbypQQ9_XK3hSYNB6msPGlmNkcu6N0pRTbLEWFyuZvNvsKfpFuzmruh3h-bKxD8qfYzo\/exec\";\r\n\r\n\r\n\/* =====================================================\r\n   TASK DATABASE\r\n====================================================== *\/\r\n\r\nconst TASK_SECTIONS = [\r\n\r\n{\r\nnumber:1,\r\ntitle:\"Foundation & Account Setup\",\r\ndescription:\"Create the project foundation, team and Google Ads environment.\",\r\ntasks:[\r\n\r\n[\"T01\",\"Create Project Team\",\"Divide yourselves into a group and assign responsibilities.\"],\r\n[\"T02\",\"Select Real Brand\",\"Choose a real brand with a usable website and clear business objective.\"],\r\n[\"T03\",\"Create Project Email ID\",\"Create a professional project email for campaign activities.\"],\r\n[\"T04\",\"Assign Team Roles\",\"Assign Ads, Research, CRO, Tracking, Creative and Reporting responsibilities.\"],\r\n[\"T05\",\"Audit Brand Website\",\"Review website UX, CTA, offer, trust elements and conversion journey.\"],\r\n[\"T06\",\"Identify Brand USP\",\"Document the main differentiator of the selected brand.\"],\r\n[\"T07\",\"Identify Competitors\",\"Find at least 3 direct or indirect competitors.\"],\r\n[\"T08\",\"Define Campaign Objective\",\"Define Lead, Sale, Booking, Call, Enquiry or another primary conversion goal.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:2,\r\ntitle:\"Strategy, Funnel & Buyer Persona\",\r\ndescription:\"Understand the customer before creating campaigns.\",\r\ntasks:[\r\n\r\n[\"T09\",\"Create Marketing Funnel\",\"Build Awareness \u2192 Consideration \u2192 Conversion \u2192 Remarketing funnel.\"],\r\n[\"T10\",\"Define Campaign Goal\",\"Define the exact business outcome expected from Google Ads.\"],\r\n[\"T11\",\"Create Buyer Persona\",\"Create at least 2 detailed buyer personas.\"],\r\n[\"T12\",\"Map Customer Pain Points\",\"Document customer problems, motivations and objections.\"],\r\n[\"T13\",\"Define Customer Journey\",\"Map Search \u2192 Landing Page \u2192 Conversion journey.\"],\r\n[\"T14\",\"Define Offer\",\"Create the offer\/message the campaign will promote.\"],\r\n[\"T15\",\"Define Conversion Actions\",\"Identify form, purchase, call, WhatsApp or other conversion actions.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:3,\r\ntitle:\"Keyword Research\",\r\ndescription:\"Build a practical keyword universe for Search campaigns.\",\r\ntasks:[\r\n\r\n[\"T16\",\"Conduct Keyword Research\",\"Research keywords relevant to the selected brand.\"],\r\n[\"T17\",\"Build Keyword Master Sheet\",\"Create a Google Sheet containing researched keywords.\"],\r\n[\"T18\",\"Classify Search Intent\",\"Classify keywords into Informational, Commercial and Transactional intent.\"],\r\n[\"T19\",\"Identify High Intent Keywords\",\"Identify keywords closest to conversion.\"],\r\n[\"T20\",\"Create Negative Keyword List\",\"Prepare irrelevant and unwanted search terms.\"],\r\n[\"T21\",\"Group Keywords\",\"Create tightly themed keyword groups.\"],\r\n[\"T22\",\"Review Keyword Metrics\",\"Review search volume, competition, CPC and other metrics.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:4,\r\ntitle:\"Search Campaign Structure\",\r\ndescription:\"Build the architecture before launching the campaign.\",\r\ntasks:[\r\n\r\n[\"T23\",\"Create Campaign Structure\",\"Design Campaign \u2192 Ad Group \u2192 Keyword structure.\"],\r\n[\"T24\",\"Define Campaign Naming Convention\",\"Create a clean naming convention.\"],\r\n[\"T25\",\"Select Campaign Settings\",\"Define location, language, budget, networks and other settings.\"],\r\n[\"T26\",\"Build Search Ad Copy\",\"Write headlines and descriptions focused on user intent.\"],\r\n[\"T27\",\"Create Multiple Ad Variations\",\"Build multiple ad variations for testing.\"],\r\n[\"T28\",\"Build Assets \/ Extensions\",\"Create sitelinks, callouts, structured snippets, calls and relevant assets.\"],\r\n[\"T29\",\"Create Final Search Campaign\",\"Build the complete campaign in Google Ads.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:5,\r\ntitle:\"Landing Page & CRO\",\r\ndescription:\"Build a conversion-focused landing page.\",\r\ntasks:[\r\n\r\n[\"T30\",\"Plan Landing Page Structure\",\"Define headline, USP, benefits, proof, offer and CTA.\"],\r\n[\"T31\",\"Create Landing Page Using AI\",\"Use an AI website\/page builder to build the landing page.\"],\r\n[\"T32\",\"Add Strong CTA\",\"Add clear conversion-focused calls to action.\"],\r\n[\"T33\",\"Add Trust Elements\",\"Add relevant reviews, proof, certifications or statistics.\"],\r\n[\"T34\",\"Create Thank You Page\",\"Build a dedicated thank-you page after conversion.\"],\r\n[\"T35\",\"Check Mobile Experience\",\"Test landing page on mobile and desktop.\"],\r\n[\"T36\",\"Test Conversion Journey\",\"Complete the entire journey from ad click to conversion.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:6,\r\ntitle:\"Conversion Tracking & GTM\",\r\ndescription:\"Make the campaign measurable before launch.\",\r\ntasks:[\r\n\r\n[\"T37\",\"Create GTM Container\",\"Create or configure Google Tag Manager.\"],\r\n[\"T38\",\"Install GTM\",\"Install GTM correctly on the landing page.\"],\r\n[\"T39\",\"Configure Conversion Event\",\"Define the primary conversion event.\"],\r\n[\"T40\",\"Create GTM Trigger\",\"Create the correct conversion trigger.\"],\r\n[\"T41\",\"Create GTM Tag\",\"Configure the relevant conversion tag.\"],\r\n[\"T42\",\"Test Using Preview Mode\",\"Test whether the tag fires correctly.\"],\r\n[\"T43\",\"Verify Google Ads Conversion\",\"Confirm conversion tracking inside Google Ads.\"],\r\n[\"T44\",\"Test Real Conversion\",\"Complete a real test conversion and verify tracking.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:7,\r\ntitle:\"Search Campaign Launch\",\r\ndescription:\"Final checks and launch the Search campaign.\",\r\ntasks:[\r\n\r\n[\"T45\",\"Complete Campaign QA\",\"Check keywords, ads, assets, locations, budget and settings.\"],\r\n[\"T46\",\"Check Destination URLs\",\"Verify every ad and asset points to the correct URL.\"],\r\n[\"T47\",\"Check Policy Risks\",\"Review ad copy and landing page for potential policy issues.\"],\r\n[\"T48\",\"Set Campaign Budget\",\"Define and document the campaign budget.\"],\r\n[\"T49\",\"Launch Search Campaign\",\"Launch the Search campaign.\"],\r\n[\"T50\",\"Record Launch Details\",\"Record launch date, budget and campaign structure.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:8,\r\ntitle:\"Display Advertising\",\r\ndescription:\"Create and launch a Display campaign.\",\r\ntasks:[\r\n\r\n[\"T51\",\"Define Display Objective\",\"Define the role of Display in the funnel.\"],\r\n[\"T52\",\"Build Display Creatives\",\"Create multiple Display ad creatives.\"],\r\n[\"T53\",\"Create Display Headlines\",\"Create Display headlines.\"],\r\n[\"T54\",\"Create Display Descriptions\",\"Create relevant descriptions and CTA messaging.\"],\r\n[\"T55\",\"Create Display Audience 1\",\"Build the first relevant Display audience.\"],\r\n[\"T56\",\"Create Display Audience 2\",\"Build the second relevant Display audience.\"],\r\n[\"T57\",\"Create Display Audience 3\",\"Build the third relevant Display audience.\"],\r\n[\"T58\",\"Configure Display Campaign\",\"Create campaign, audience, budget and targeting settings.\"],\r\n[\"T59\",\"Launch Display Campaign\",\"Launch the Display campaign after QA.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:9,\r\ntitle:\"YouTube \/ Video Advertising\",\r\ndescription:\"Create a video advertising strategy and campaign.\",\r\ntasks:[\r\n\r\n[\"T60\",\"Define YouTube Objective\",\"Define the purpose of the Video campaign.\"],\r\n[\"T61\",\"Create Video Concept\",\"Write concept and storyboard.\"],\r\n[\"T62\",\"Create YouTube Video\",\"Produce the required YouTube advertisement.\"],\r\n[\"T63\",\"Create Video CTA\",\"Create a clear CTA aligned with the campaign goal.\"],\r\n[\"T64\",\"Create Remarketing Audience\",\"Build a remarketing audience.\"],\r\n[\"T65\",\"Create Additional Audience\",\"Create one additional relevant audience.\"],\r\n[\"T66\",\"Configure Video Campaign\",\"Set targeting, budget, creative and conversion settings.\"],\r\n[\"T67\",\"Launch YouTube Campaign\",\"Launch the Video campaign after QA.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:10,\r\ntitle:\"Reporting & Data Analysis\",\r\ndescription:\"Build a professional Google Ads reporting system.\",\r\ntasks:[\r\n\r\n[\"T68\",\"Create Google Ads Report Sheet\",\"Create a structured reporting sheet.\"],\r\n[\"T69\",\"Report Campaign Performance\",\"Include campaign-level performance.\"],\r\n[\"T70\",\"Report Search Terms\",\"Analyze Search Terms and identify useful\/irrelevant queries.\"],\r\n[\"T71\",\"Report Auction Insights\",\"Analyze competitor visibility using Auction Insights.\"],\r\n[\"T72\",\"Report Keyword Performance\",\"Analyze keyword performance.\"],\r\n[\"T73\",\"Report Location Performance\",\"Analyze performance by location.\"],\r\n[\"T74\",\"Report Device Performance\",\"Analyze performance by device.\"],\r\n[\"T75\",\"Report Display Placements\",\"Analyze Display placements.\"],\r\n[\"T76\",\"Report Video Placements\",\"Analyze YouTube\/Video placements.\"],\r\n[\"T77\",\"Report Conversion Performance\",\"Analyze conversions and conversion rate.\"],\r\n[\"T78\",\"Report Cost Metrics\",\"Report spend, CPC, CPA\/Cost per Conversion and relevant metrics.\"],\r\n[\"T79\",\"Build Google Sheet Dashboard\",\"Create a visual reporting dashboard in Google Sheets.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:11,\r\ntitle:\"Optimization & Google Ads Scripts\",\r\ndescription:\"Think like a real performance marketing team.\",\r\ntasks:[\r\n\r\n[\"T80\",\"Build Optimization Checklist\",\"Create a complete campaign optimization checklist.\"],\r\n[\"T81\",\"Optimize Search Terms\",\"Add relevant negatives and identify new keyword opportunities.\"],\r\n[\"T82\",\"Optimize Keywords\",\"Review bids, match types and keyword performance.\"],\r\n[\"T83\",\"Optimize Ads\",\"Review CTR, relevance and conversion performance.\"],\r\n[\"T84\",\"Optimize Location\",\"Identify high and low performing locations.\"],\r\n[\"T85\",\"Optimize Device\",\"Identify device-level opportunities.\"],\r\n[\"T86\",\"Optimize Display Placements\",\"Review and optimize placement performance.\"],\r\n[\"T87\",\"Optimize Video Placements\",\"Review and optimize video placement performance.\"],\r\n[\"T88\",\"Build Google Ads Script 1\",\"Create one useful Google Ads automation script.\"],\r\n[\"T89\",\"Build Google Ads Script 2\",\"Create a second useful automation script.\"],\r\n[\"T90\",\"Build Google Ads Script 3\",\"Create a third useful automation script.\"],\r\n[\"T91\",\"Build Google Ads Script 4\",\"Create a fourth useful automation script.\"],\r\n[\"T92\",\"Build Google Ads Script 5\",\"Create a fifth useful automation script.\"]\r\n\r\n]\r\n},\r\n\r\n{\r\nnumber:12,\r\ntitle:\"Final Audit & Capstone Presentation\",\r\ndescription:\"Prepare the complete project for evaluation.\",\r\ntasks:[\r\n\r\n[\"T93\",\"Complete Campaign Audit\",\"Audit Search, Display and Video setup.\"],\r\n[\"T94\",\"Check Tracking\",\"Verify all important conversion tracking.\"],\r\n[\"T95\",\"Check Landing Pages\",\"Review speed, mobile UX, CTA and conversion journey.\"],\r\n[\"T96\",\"Review Budget & Spend\",\"Document planned budget versus actual spend.\"],\r\n[\"T97\",\"Document Learnings\",\"Write major project learnings.\"],\r\n[\"T98\",\"Document Optimization Opportunities\",\"Identify the next optimization actions.\"],\r\n[\"T99\",\"Prepare Final Presentation\",\"Prepare the complete Capstone presentation.\"],\r\n[\"T100\",\"Submit Final Google Sheet Report\",\"Submit the final performance report.\"],\r\n[\"T101\",\"Final Team Review\",\"Review all tasks before final submission.\"],\r\n[\"T102\",\"Capstone Project Submission\",\"Submit the final project.\"]\r\n\r\n]\r\n}\r\n\r\n];\r\n\r\n\r\n\/* =====================================================\r\n   GLOBAL VARIABLES\r\n====================================================== *\/\r\n\r\nlet teamId =\r\nlocalStorage.getItem(\"pgp16_team_id\") || \"\";\r\n\r\nlet taskList = [];\r\n\r\nlet totalTaskCount = 0;\r\n\r\n\r\n\/* =====================================================\r\n   INITIAL LOAD\r\n====================================================== *\/\r\n\r\ndocument.addEventListener(\r\n\"DOMContentLoaded\",\r\nfunction(){\r\n\r\n    buildTasks();\r\n\r\n    loadTeam();\r\n\r\n    setToday();\r\n\r\n    updateProgress();\r\n\r\n});\r\n\r\n\r\n\/* =====================================================\r\n   SET TODAY\r\n====================================================== *\/\r\n\r\nfunction setToday(){\r\n\r\n    const date =\r\n    document.getElementById(\r\n        \"eodDate\"\r\n    );\r\n\r\n    if(date && !date.value){\r\n\r\n        date.value =\r\n        new Date()\r\n        .toISOString()\r\n        .split(\"T\")[0];\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   BUILD TASKS\r\n====================================================== *\/\r\n\r\nfunction buildTasks(){\r\n\r\n    const container =\r\n    document.getElementById(\r\n        \"taskContainer\"\r\n    );\r\n\r\n    container.innerHTML = \"\";\r\n\r\n    taskList = [];\r\n\r\n\r\n    TASK_SECTIONS.forEach(\r\n    function(section){\r\n\r\n        const sectionDiv =\r\n        document.createElement(\r\n            \"section\"\r\n        );\r\n\r\n        sectionDiv.className =\r\n        \"task-section\";\r\n\r\n\r\n        const header =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n        header.className =\r\n        \"task-header\";\r\n\r\n\r\n        header.innerHTML = `\r\n\r\n        <div class=\"section-number\">\r\n            ${section.number}\r\n        <\/div>\r\n\r\n        <div>\r\n\r\n            <h3>\r\n                ${section.title}\r\n            <\/h3>\r\n\r\n            <p>\r\n                ${section.description}\r\n            <\/p>\r\n\r\n        <\/div>\r\n\r\n        <div\r\n            class=\"section-count\"\r\n            id=\"sectionCount${section.number}\"\r\n        >\r\n            0 \/ ${section.tasks.length}\r\n        <\/div>\r\n\r\n        `;\r\n\r\n\r\n        sectionDiv.appendChild(\r\n            header\r\n        );\r\n\r\n\r\n        section.tasks.forEach(\r\n        function(item){\r\n\r\n            const taskId =\r\n            item[0];\r\n\r\n            const taskName =\r\n            item[1];\r\n\r\n            const description =\r\n            item[2];\r\n\r\n\r\n            taskList.push({\r\n\r\n                id:taskId,\r\n\r\n                section:\r\n                section.title,\r\n\r\n                name:\r\n                taskName\r\n\r\n            });\r\n\r\n\r\n            const row =\r\n            document.createElement(\r\n                \"div\"\r\n            );\r\n\r\n            row.className =\r\n            \"task\";\r\n\r\n            row.id =\r\n            \"taskRow_\" + taskId;\r\n\r\n\r\n            const checkbox =\r\n            document.createElement(\r\n                \"input\"\r\n            );\r\n\r\n            checkbox.type =\r\n            \"checkbox\";\r\n\r\n            checkbox.className =\r\n            \"task-checkbox\";\r\n\r\n            checkbox.id =\r\n            taskId;\r\n\r\n\r\n            checkbox.addEventListener(\r\n                \"change\",\r\n                function(){\r\n\r\n                    handleTaskChange(\r\n\r\n                        this,\r\n\r\n                        section,\r\n\r\n                        taskId,\r\n\r\n                        taskName\r\n\r\n                    );\r\n\r\n                }\r\n            );\r\n\r\n\r\n            const content =\r\n            document.createElement(\r\n                \"div\"\r\n            );\r\n\r\n            content.className =\r\n            \"task-content\";\r\n\r\n\r\n            content.innerHTML = `\r\n\r\n            <div class=\"task-title\">\r\n                ${taskName}\r\n            <\/div>\r\n\r\n            <div class=\"task-description\">\r\n                ${description}\r\n            <\/div>\r\n\r\n            `;\r\n\r\n\r\n            const idBadge =\r\n            document.createElement(\r\n                \"span\"\r\n            );\r\n\r\n            idBadge.className =\r\n            \"task-id\";\r\n\r\n            idBadge.textContent =\r\n            taskId;\r\n\r\n\r\n            row.appendChild(\r\n                checkbox\r\n            );\r\n\r\n            row.appendChild(\r\n                content\r\n            );\r\n\r\n            row.appendChild(\r\n                idBadge\r\n            );\r\n\r\n\r\n            sectionDiv.appendChild(\r\n                row\r\n            );\r\n\r\n        });\r\n\r\n\r\n        container.appendChild(\r\n            sectionDiv\r\n        );\r\n\r\n    });\r\n\r\n\r\n    totalTaskCount =\r\n    taskList.length;\r\n\r\n\r\n    document.getElementById(\r\n        \"totalTasks\"\r\n    ).textContent =\r\n    totalTaskCount;\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   CREATE TEAM\r\n====================================================== *\/\r\n\r\nfunction createTeam(){\r\n\r\n    const teamName =\r\n    getValue(\"teamName\");\r\n\r\n    const brand =\r\n    getValue(\"brand\");\r\n\r\n    const email =\r\n    getValue(\"projectEmail\");\r\n\r\n    const teamLead =\r\n    getValue(\"teamLead\");\r\n\r\n\r\n    if(!teamName){\r\n\r\n        showToast(\r\n            \"Please enter Team Name.\"\r\n        );\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    if(!brand){\r\n\r\n        showToast(\r\n            \"Please enter the Brand.\"\r\n        );\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    if(!email){\r\n\r\n        showToast(\r\n            \"Please enter Project Email.\"\r\n        );\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * Reuse existing Team ID if available.\r\n     * Otherwise generate one.\r\n     *\/\r\n\r\n    if(!teamId){\r\n\r\n        teamId =\r\n        \"PGP16-\" +\r\n        Math.random()\r\n        .toString(36)\r\n        .substring(2,8)\r\n        .toUpperCase();\r\n\r\n    }\r\n\r\n\r\n    const members =\r\n    getMembers();\r\n\r\n\r\n    \/*\r\n     * Save locally\r\n     *\/\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_team_id\",\r\n        teamId\r\n    );\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_team_name\",\r\n        teamName\r\n    );\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_brand\",\r\n        brand\r\n    );\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_email\",\r\n        email\r\n    );\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_lead\",\r\n        teamLead\r\n    );\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_members\",\r\n        members\r\n    );\r\n\r\n\r\n    \/*\r\n     * Send Team Data\r\n     *\/\r\n\r\n    sendToGoogleSheet({\r\n\r\n        action:\r\n        \"createTeam\",\r\n\r\n        teamId:\r\n        teamId,\r\n\r\n        teamName:\r\n        teamName,\r\n\r\n        brand:\r\n        brand,\r\n\r\n        email:\r\n        email,\r\n\r\n        projectEmail:\r\n        email,\r\n\r\n        teamLead:\r\n        teamLead,\r\n\r\n        members:\r\n        members\r\n\r\n    });\r\n\r\n\r\n    displayTeam();\r\n\r\n\r\n    showToast(\r\n        \"\u2713 Team saved to Google Sheet\"\r\n    );\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   LOAD TEAM\r\n====================================================== *\/\r\n\r\nfunction loadTeam(){\r\n\r\n    teamId =\r\n    localStorage.getItem(\r\n        \"pgp16_team_id\"\r\n    ) || \"\";\r\n\r\n\r\n    const teamName =\r\n    localStorage.getItem(\r\n        \"pgp16_team_name\"\r\n    ) || \"\";\r\n\r\n\r\n    const brand =\r\n    localStorage.getItem(\r\n        \"pgp16_brand\"\r\n    ) || \"\";\r\n\r\n\r\n    const email =\r\n    localStorage.getItem(\r\n        \"pgp16_email\"\r\n    ) || \"\";\r\n\r\n\r\n    const lead =\r\n    localStorage.getItem(\r\n        \"pgp16_lead\"\r\n    ) || \"\";\r\n\r\n\r\n    if(teamName){\r\n\r\n        setValue(\r\n            \"teamName\",\r\n            teamName\r\n        );\r\n\r\n    }\r\n\r\n\r\n    if(brand){\r\n\r\n        setValue(\r\n            \"brand\",\r\n            brand\r\n        );\r\n\r\n    }\r\n\r\n\r\n    if(email){\r\n\r\n        setValue(\r\n            \"projectEmail\",\r\n            email\r\n        );\r\n\r\n    }\r\n\r\n\r\n    if(lead){\r\n\r\n        setValue(\r\n            \"teamLead\",\r\n            lead\r\n        );\r\n\r\n    }\r\n\r\n\r\n    displayTeam();\r\n\r\n    loadSavedTasks();\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   DISPLAY TEAM\r\n====================================================== *\/\r\n\r\nfunction displayTeam(){\r\n\r\n    if(!teamId){\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    document\r\n    .getElementById(\r\n        \"teamInfo\"\r\n    )\r\n    .classList.add(\r\n        \"show\"\r\n    );\r\n\r\n\r\n    document.getElementById(\r\n        \"displayTeamId\"\r\n    ).textContent =\r\n    teamId;\r\n\r\n\r\n    document.getElementById(\r\n        \"displayTeamName\"\r\n    ).textContent =\r\n    getValue(\"teamName\") ||\r\n    \"\u2014\";\r\n\r\n\r\n    document.getElementById(\r\n        \"displayBrand\"\r\n    ).textContent =\r\n    getValue(\"brand\") ||\r\n    \"\u2014\";\r\n\r\n\r\n    document.getElementById(\r\n        \"displayEmail\"\r\n    ).textContent =\r\n    getValue(\"projectEmail\") ||\r\n    \"\u2014\";\r\n\r\n\r\n    document.getElementById(\r\n        \"statTeam\"\r\n    ).textContent =\r\n    teamId;\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   GET MEMBERS\r\n====================================================== *\/\r\n\r\nfunction getMembers(){\r\n\r\n    const members = [];\r\n\r\n\r\n    for(\r\n        let i=1;\r\n        i<=4;\r\n        i++\r\n    ){\r\n\r\n        const name =\r\n        getValue(\r\n            \"member\" + i\r\n        );\r\n\r\n        const role =\r\n        getValue(\r\n            \"role\" + i\r\n        );\r\n\r\n\r\n        if(name){\r\n\r\n            members.push(\r\n                name +\r\n                \" (\" +\r\n                role +\r\n                \")\"\r\n            );\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    return members.join(\r\n        \", \"\r\n    );\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   TASK CHANGE\r\n====================================================== *\/\r\n\r\nfunction handleTaskChange(\r\n    checkbox,\r\n    section,\r\n    taskId,\r\n    taskName\r\n){\r\n\r\n    \/*\r\n     * Team must exist\r\n     *\/\r\n\r\n    if(!teamId){\r\n\r\n        checkbox.checked =\r\n        false;\r\n\r\n\r\n        showToast(\r\n            \"Create your team first.\"\r\n        );\r\n\r\n\r\n        document\r\n        .getElementById(\r\n            \"teamName\"\r\n        )\r\n        .focus();\r\n\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    const row =\r\n    document.getElementById(\r\n        \"taskRow_\" +\r\n        taskId\r\n    );\r\n\r\n\r\n    if(checkbox.checked){\r\n\r\n        row.classList.add(\r\n            \"completed\"\r\n        );\r\n\r\n    }else{\r\n\r\n        row.classList.remove(\r\n            \"completed\"\r\n        );\r\n\r\n    }\r\n\r\n\r\n    saveLocalTask(\r\n        taskId,\r\n        checkbox.checked\r\n    );\r\n\r\n\r\n    updateProgress();\r\n\r\n\r\n    \/*\r\n     * IMPORTANT:\r\n     * Send immediately.\r\n     *\/\r\n\r\n    sendToGoogleSheet({\r\n\r\n        action:\r\n        \"saveTaskProgress\",\r\n\r\n        teamId:\r\n        teamId,\r\n\r\n        teamName:\r\n        getValue(\"teamName\"),\r\n\r\n        brand:\r\n        getValue(\"brand\"),\r\n\r\n        student:\r\n        getMembers(),\r\n\r\n        studentEmail:\r\n        getValue(\"projectEmail\"),\r\n\r\n        section:\r\n        section.title,\r\n\r\n        taskId:\r\n        taskId,\r\n\r\n        task:\r\n        taskName,\r\n\r\n        status:\r\n        checkbox.checked\r\n        ? \"Completed\"\r\n        : \"Pending\",\r\n\r\n        completion:\r\n        getProgress() + \"%\",\r\n\r\n        notes:\"\"\r\n\r\n    });\r\n\r\n\r\n    showToast(\r\n\r\n        checkbox.checked\r\n\r\n        ? \"\u2713 Task synced to Google Sheet\"\r\n\r\n        : \"Task marked pending\"\r\n\r\n    );\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   SAVE TASK LOCALLY\r\n====================================================== *\/\r\n\r\nfunction saveLocalTask(\r\n    taskId,\r\n    checked\r\n){\r\n\r\n    const saved =\r\n    JSON.parse(\r\n        localStorage.getItem(\r\n            \"pgp16_tasks\"\r\n        ) || \"{}\"\r\n    );\r\n\r\n\r\n    saved[taskId] =\r\n    checked;\r\n\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_tasks\",\r\n        JSON.stringify(saved)\r\n    );\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   LOAD TASKS\r\n====================================================== *\/\r\n\r\nfunction loadSavedTasks(){\r\n\r\n    const saved =\r\n    JSON.parse(\r\n        localStorage.getItem(\r\n            \"pgp16_tasks\"\r\n        ) || \"{}\"\r\n    );\r\n\r\n\r\n    taskList.forEach(\r\n    function(task){\r\n\r\n        const checkbox =\r\n        document.getElementById(\r\n            task.id\r\n        );\r\n\r\n\r\n        const row =\r\n        document.getElementById(\r\n            \"taskRow_\" +\r\n            task.id\r\n        );\r\n\r\n\r\n        if(\r\n            saved[task.id] === true\r\n        ){\r\n\r\n            checkbox.checked =\r\n            true;\r\n\r\n            row.classList.add(\r\n                \"completed\"\r\n            );\r\n\r\n        }\r\n\r\n    });\r\n\r\n\r\n    updateProgress();\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   UPDATE PROGRESS\r\n====================================================== *\/\r\n\r\nfunction updateProgress(){\r\n\r\n    let completed = 0;\r\n\r\n\r\n    taskList.forEach(\r\n    function(task){\r\n\r\n        const checkbox =\r\n        document.getElementById(\r\n            task.id\r\n        );\r\n\r\n\r\n        if(\r\n            checkbox &&\r\n            checkbox.checked\r\n        ){\r\n\r\n            completed++;\r\n\r\n        }\r\n\r\n    });\r\n\r\n\r\n    const pending =\r\n    totalTaskCount -\r\n    completed;\r\n\r\n\r\n    const percentage =\r\n    totalTaskCount\r\n    ? Math.round(\r\n        completed \/\r\n        totalTaskCount *\r\n        100\r\n      )\r\n    : 0;\r\n\r\n\r\n    document.getElementById(\r\n        \"completedTasks\"\r\n    ).textContent =\r\n    completed;\r\n\r\n\r\n    document.getElementById(\r\n        \"pendingTasks\"\r\n    ).textContent =\r\n    pending;\r\n\r\n\r\n    document.getElementById(\r\n        \"progressPercent\"\r\n    ).textContent =\r\n    percentage + \"%\";\r\n\r\n\r\n    document.getElementById(\r\n        \"progressText\"\r\n    ).textContent =\r\n    completed +\r\n    \" \/ \" +\r\n    totalTaskCount +\r\n    \" Tasks\";\r\n\r\n\r\n    document.getElementById(\r\n        \"progressFill\"\r\n    ).style.width =\r\n    percentage + \"%\";\r\n\r\n\r\n    document.getElementById(\r\n        \"eodCompleted\"\r\n    ).value =\r\n    completed;\r\n\r\n\r\n    document.getElementById(\r\n        \"eodPending\"\r\n    ).value =\r\n    pending;\r\n\r\n\r\n    document.getElementById(\r\n        \"eodProgress\"\r\n    ).value =\r\n    percentage;\r\n\r\n\r\n    \/*\r\n     * Section counters\r\n     *\/\r\n\r\n    TASK_SECTIONS.forEach(\r\n    function(section){\r\n\r\n        let completedCount =\r\n        0;\r\n\r\n\r\n        section.tasks.forEach(\r\n        function(item){\r\n\r\n            const checkbox =\r\n            document.getElementById(\r\n                item[0]\r\n            );\r\n\r\n\r\n            if(\r\n                checkbox &&\r\n                checkbox.checked\r\n            ){\r\n\r\n                completedCount++;\r\n\r\n            }\r\n\r\n        });\r\n\r\n\r\n        const counter =\r\n        document.getElementById(\r\n            \"sectionCount\" +\r\n            section.number\r\n        );\r\n\r\n\r\n        if(counter){\r\n\r\n            counter.textContent =\r\n            completedCount +\r\n            \" \/ \" +\r\n            section.tasks.length;\r\n\r\n        }\r\n\r\n    });\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   GET PROGRESS\r\n====================================================== *\/\r\n\r\nfunction getProgress(){\r\n\r\n    let completed = 0;\r\n\r\n\r\n    taskList.forEach(\r\n    function(task){\r\n\r\n        const checkbox =\r\n        document.getElementById(\r\n            task.id\r\n        );\r\n\r\n\r\n        if(\r\n            checkbox &&\r\n            checkbox.checked\r\n        ){\r\n\r\n            completed++;\r\n\r\n        }\r\n\r\n    });\r\n\r\n\r\n    if(!totalTaskCount){\r\n\r\n        return 0;\r\n\r\n    }\r\n\r\n\r\n    return Math.round(\r\n        completed \/\r\n        totalTaskCount *\r\n        100\r\n    );\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   EOD\r\n====================================================== *\/\r\n\r\nfunction calculateEOD(){\r\n\r\n    updateProgress();\r\n\r\n    showToast(\r\n        \"\u2713 EOD progress calculated.\"\r\n    );\r\n\r\n}\r\n\r\n\r\nfunction submitEOD(){\r\n\r\n    if(!teamId){\r\n\r\n        showToast(\r\n            \"Create your team first.\"\r\n        );\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    updateProgress();\r\n\r\n\r\n    const data = {\r\n\r\n        action:\r\n        \"saveEOD\",\r\n\r\n        date:\r\n        getValue(\"eodDate\"),\r\n\r\n        teamId:\r\n        teamId,\r\n\r\n        teamName:\r\n        getValue(\"teamName\"),\r\n\r\n        brand:\r\n        getValue(\"brand\"),\r\n\r\n        student:\r\n        getMembers(),\r\n\r\n        studentEmail:\r\n        getValue(\"projectEmail\"),\r\n\r\n        tasksCompleted:\r\n        getValue(\"eodCompleted\"),\r\n\r\n        tasksPending:\r\n        getValue(\"eodPending\"),\r\n\r\n        overallProgress:\r\n        getValue(\"eodProgress\"),\r\n\r\n        todaysWork:\r\n        getValue(\"eodWork\"),\r\n\r\n        blockers:\r\n        getValue(\"eodBlockers\"),\r\n\r\n        tomorrowPlan:\r\n        getValue(\"eodTomorrow\"),\r\n\r\n        googleAdsStatus:\r\n        getValue(\"googleAdsStatus\"),\r\n\r\n        landingPageStatus:\r\n        getValue(\"landingStatus\"),\r\n\r\n        trackingStatus:\r\n        getValue(\"trackingStatus\"),\r\n\r\n        creativeStatus:\r\n        getValue(\"creativeStatus\"),\r\n\r\n        notes:\r\n        getValue(\"eodNotes\")\r\n\r\n    };\r\n\r\n\r\n    sendToGoogleSheet(\r\n        data\r\n    );\r\n\r\n\r\n    showToast(\r\n        \"\u2713 EOD Report synced to Google Sheet\"\r\n    );\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   FINAL SUBMISSION\r\n====================================================== *\/\r\n\r\nfunction submitFinal(){\r\n\r\n    if(!teamId){\r\n\r\n        showToast(\r\n            \"Create your team first.\"\r\n        );\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    const progress =\r\n    getValue(\r\n        \"finalProgress\"\r\n    ) ||\r\n    getProgress();\r\n\r\n\r\n    if(\r\n        Number(progress) < 100\r\n    ){\r\n\r\n        const confirmSubmit =\r\n        confirm(\r\n            \"Your final progress is below 100%. Are you sure you want to submit?\"\r\n        );\r\n\r\n\r\n        if(!confirmSubmit){\r\n\r\n            return;\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    const data = {\r\n\r\n        action:\r\n        \"finalSubmission\",\r\n\r\n        teamId:\r\n        teamId,\r\n\r\n        teamName:\r\n        getValue(\"teamName\"),\r\n\r\n        brand:\r\n        getValue(\"brand\"),\r\n\r\n        projectEmail:\r\n        getValue(\"projectEmail\"),\r\n\r\n        teamLead:\r\n        getValue(\"teamLead\"),\r\n\r\n        members:\r\n        getMembers(),\r\n\r\n        finalProgress:\r\n        progress,\r\n\r\n        searchCampaignUrl:\r\n        getValue(\r\n            \"searchCampaignUrl\"\r\n        ),\r\n\r\n        displayCampaignUrl:\r\n        getValue(\r\n            \"displayCampaignUrl\"\r\n        ),\r\n\r\n        youtubeCampaignUrl:\r\n        getValue(\r\n            \"youtubeCampaignUrl\"\r\n        ),\r\n\r\n        landingPageUrl:\r\n        getValue(\r\n            \"landingPageUrl\"\r\n        ),\r\n\r\n        googleSheetReportUrl:\r\n        getValue(\r\n            \"googleSheetReportUrl\"\r\n        ),\r\n\r\n        presentationUrl:\r\n        getValue(\r\n            \"presentationUrl\"\r\n        ),\r\n\r\n        driveFolderUrl:\r\n        getValue(\r\n            \"driveFolderUrl\"\r\n        ),\r\n\r\n        finalProjectUrl:\r\n        getValue(\r\n            \"finalProjectUrl\"\r\n        ),\r\n\r\n        keyLearnings:\r\n        getValue(\r\n            \"keyLearnings\"\r\n        ),\r\n\r\n        challenges:\r\n        getValue(\r\n            \"challenges\"\r\n        ),\r\n\r\n        notes:\r\n        getValue(\r\n            \"finalNotes\"\r\n        )\r\n\r\n    };\r\n\r\n\r\n    \/*\r\n     * Send final submission\r\n     *\/\r\n\r\n    sendToGoogleSheet(\r\n        data\r\n    );\r\n\r\n\r\n    \/*\r\n     * Save local backup\r\n     *\/\r\n\r\n    localStorage.setItem(\r\n        \"pgp16_final_submission\",\r\n        JSON.stringify(data)\r\n    );\r\n\r\n\r\n    showToast(\r\n        \"\u2713 FINAL SUBMISSION synced to Google Sheet\"\r\n    );\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   SEND DATA TO APPS SCRIPT\r\n====================================================== *\/\r\n\r\nfunction sendToGoogleSheet(\r\n    data\r\n){\r\n\r\n    console.log(\r\n        \"Sending to Google Sheet:\",\r\n        data\r\n    );\r\n\r\n\r\n    \/*\r\n     * no-cors is intentionally used.\r\n     * Apps Script receives the POST even though\r\n     * browser JavaScript cannot read the response.\r\n     *\/\r\n\r\n    fetch(\r\n        SCRIPT_URL,\r\n        {\r\n\r\n            method:\"POST\",\r\n\r\n            mode:\"no-cors\",\r\n\r\n            headers:{\r\n                \"Content-Type\":\r\n                \"text\/plain;charset=utf-8\"\r\n            },\r\n\r\n            body:\r\n            JSON.stringify(data)\r\n\r\n        }\r\n    )\r\n    .then(\r\n    function(){\r\n\r\n        console.log(\r\n            \"Request sent successfully:\",\r\n            data.action\r\n        );\r\n\r\n    })\r\n    .catch(\r\n    function(error){\r\n\r\n        console.error(\r\n            \"Sync error:\",\r\n            error\r\n        );\r\n\r\n\r\n        showToast(\r\n            \"Could not send data. Check your internet connection.\"\r\n        );\r\n\r\n    });\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   HELPER\r\n====================================================== *\/\r\n\r\nfunction getValue(id){\r\n\r\n    const element =\r\n    document.getElementById(id);\r\n\r\n\r\n    if(!element){\r\n\r\n        return \"\";\r\n\r\n    }\r\n\r\n\r\n    return element.value.trim();\r\n\r\n}\r\n\r\n\r\nfunction setValue(\r\n    id,\r\n    value\r\n){\r\n\r\n    const element =\r\n    document.getElementById(id);\r\n\r\n\r\n    if(element){\r\n\r\n        element.value =\r\n        value;\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   TOAST\r\n====================================================== *\/\r\n\r\nfunction showToast(\r\n    message\r\n){\r\n\r\n    const toast =\r\n    document.getElementById(\r\n        \"toast\"\r\n    );\r\n\r\n\r\n    toast.textContent =\r\n    message;\r\n\r\n\r\n    toast.classList.add(\r\n        \"show\"\r\n    );\r\n\r\n\r\n    setTimeout(\r\n    function(){\r\n\r\n        toast.classList.remove(\r\n            \"show\"\r\n        );\r\n\r\n    },3000);\r\n\r\n}\r\n\r\n\r\n\/* =====================================================\r\n   AUTO SAVE BASIC TEAM DATA\r\n====================================================== *\/\r\n\r\n[\r\n\"teamName\",\r\n\"brand\",\r\n\"projectEmail\",\r\n\"teamLead\",\r\n\"member1\",\r\n\"member2\",\r\n\"member3\",\r\n\"member4\"\r\n].forEach(\r\nfunction(id){\r\n\r\n    const element =\r\n    document.getElementById(\r\n        id\r\n    );\r\n\r\n\r\n    if(element){\r\n\r\n        element.addEventListener(\r\n            \"input\",\r\n            function(){\r\n\r\n                localStorage.setItem(\r\n                    \"pgp16_\" + id,\r\n                    element.value\r\n                );\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n});\r\n\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PGP 16 | Capstone Project 1 | Google Ads DN DIGITAL nest SCHOOL OF BUSINESS PGP 16 \u2014 Capstone Project 1 Google Ads \u2022 Performance Marketing \u2022 Analytics PGP 16 \u2022 LIVE CAPSTONE PROJECT Build, Launch &#038; Optimize a Complete Google Ads Funnel Work like a real performance marketing team. Select a brand, research the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":"","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_focuskw":"","rank_math_title":"","rank_math_description":"","rank_math_focus_keyword":""},"class_list":["post-634","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages\/634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=634"}],"version-history":[{"count":19,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages\/634\/revisions"}],"predecessor-version":[{"id":653,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages\/634\/revisions\/653"}],"wp:attachment":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}