Remove duplicate slides
Remove duplicate slides across the entire presentation.
(function () {
    let presentation = Api.GetPresentation();
    let slides = presentation.GetAllSlides();
    let slidesCount = slides.length;
    function compareShapes(slide1, slide2) {
        let paragraph1 = [], paragraph2 = [];
        if (slide1.GetAllShapes().length !== slide2.GetAllShapes().length) return false;
        slide1.GetAllShapes().forEach(s => {
            paragraph1.push(s.GetDocContent().GetAllParagraphs().map(p => p.GetText()));
        });
        slide2.GetAllShapes().forEach(s => {
            paragraph2.push(s.GetDocContent().GetAllParagraphs().map(p => p.GetText()));
        });
        return paragraph1.join("|") === paragraph2.join("|");
    }
    function compareCharts(slide1, slide2) {
        let chart1 = slide1.GetAllCharts();
        let chart2 = slide2.GetAllCharts();
        if (chart1.length !== chart2.length) return false;
        let summary1 = chart1.map(c => c.GetAllSeries().map(s => s.GetChartType()).join(",")).join("|");
        let summary2 = chart2.map(c => c.GetAllSeries().map(s => s.GetChartType()).join(",")).join("|");
        return summary1 === summary2;
    }
    function compareDrawings(slide1, slide2) {
        let d1 = slide1.GetAllDrawings();
        let d2 = slide2.GetAllDrawings();
        if (d1.length !== d2.length) return false;
        let data1 = d1.map(d => [d.GetPlaceholder(), d.GetWidth(), d.GetHeight()].join(",")).join("|");
        let data2 = d2.map(d => [d.GetPlaceholder(), d.GetWidth(), d.GetHeight()].join(",")).join("|");
        return data1 === data2;
    }
    function compareOleObjects(slide1, slide2) {
        let o1 = slide1.GetAllOleObjects();
        let o2 = slide2.GetAllOleObjects();
        if (o1.length !== o2.length) return false;
        let d1 = o1.map(o => o.GetData()).join("|");
        let d2 = o2.map(o => o.GetData()).join("|");
        return d1 === d2;
    }
    let duplicateIndices = new Set();
    for (let i = 0; i < slidesCount - 1; i++) {
        if (duplicateIndices.has(i)) continue;
        for (let j = i + 1; j < slidesCount; j++) {
            if (duplicateIndices.has(j)) continue;
            if (
                compareShapes(slides[i], slides[j]) &&
                compareCharts(slides[i], slides[j]) &&
                compareDrawings(slides[i], slides[j]) &&
                compareOleObjects(slides[i], slides[j])
            ) {
                duplicateIndices.add(j);
                console.log(`Duplicate: slide ${j} is a duplicate of slide ${i}`);
            }
        }
    }
    [...duplicateIndices].sort((a, b) => b - a).forEach(index => {
        presentation.RemoveSlides(index, 1);
    });
})();
Methods used: GetPresentation, GetAllSlides, GetAllShapes, GetDocContent, GetAllCharts, GetAllSeries, GetChartType, GetAllDrawings, GetPlaceholder, GetWidth, GetHeight, GetAllOleObjects, GetData, RemoveSlides
Result
