Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save nermin-slidelizard/f260ed9c00c976205675e340a09cd8b3 to your computer and use it in GitHub Desktop.

Select an option

Save nermin-slidelizard/f260ed9c00c976205675e340a09cd8b3 to your computer and use it in GitHub Desktop.
Use tags to process subsets of slides.
name: Work with tags
description: Use tags to process subsets of slides.
host: POWERPOINT
api_set: {}
script:
content: >
deleteTagsOfAllSlides();
async function deleteTagsOfAllSlides() {
await PowerPoint.run(async (context) => {
var slides = context.presentation.slides.load();
await context.sync();
if (slides.items.length > 0) {
console.log("Total slides: " + slides.items.length);
for (var i = 0; i < slides.items.length; i++) {
const slide = slides.getItemAt(i);
slide.load();
await context.sync();
await deleteWatermarkOfSlide(context, slide);
await deleteTagOfSlide(context, slide, i);
await context.sync();
}
}
});
}
async function deleteWatermarkOfSlide(context: PowerPoint.RequestContext,
slide: PowerPoint.Slide) {
var shapes = slide.shapes.load();
await context.sync();
let shapesCount = shapes.items.length;
for (var i = 0; i < shapesCount; i++) {
const shape = shapes.getItemAt(i);
shape.load();
await context.sync();
if (shape.name === 'SLC-36097cd463ce44e'){
shape.delete();
await context.sync();
shapesCount--;
i--;
}
}
}
async function deleteTagOfSlide(context: PowerPoint.RequestContext, slide:
PowerPoint.Slide, index: number) {
var tags = slide.tags.load();
await context.sync();
if (tags.items.length > 0) {
var keys = [];
var values = [];
for (var i = 0; i < tags.items.length; i++) {
const tag = tags.getItemAt(i);
tag.load();
await context.sync();
keys.push(tag.key);
values.push(tag.value);
}
const tagStrings: string[] = [];
for (var i = 0; i < keys.length; i++) {
tagStrings.push(keys[i] + " : " + values[i]);
slide.tags.delete(keys[i]);
await context.sync();
}
console.log("Deleted tags(slideIndex: " + index + "): " + tagStrings.join(","));
}
const shapes = slide.shapes.load();
await context.sync();
for (var shape of shapes.items) {
await deleteTagOfShape(context, index, shape);
}
}
async function deleteTagOfShape(context: PowerPoint.RequestContext,
slideIndex: number, shape: PowerPoint.Shape) {
var tags = shape.tags.load();
await context.sync();
if (tags.items.length > 0) {
var keys = [];
var values = [];
for (var i = 0; i < tags.items.length; i++) {
const tag = tags.getItemAt(i);
tag.load();
await context.sync();
keys.push(tag.key);
values.push(tag.value);
}
const tagStrings: string[] = [];
for (var i = 0; i < keys.length; i++) {
tagStrings.push(keys[i] + " : " + values[i]);
shape.tags.delete(keys[i]);
await context.sync();
}
console.log("Deleted tags(slideIndex: " + slideIndex + "): " + tagStrings.join(","));
}
}
language: typescript
template:
content: ''
language: html
style:
content: ''
language: css
libraries: |
https://appsforoffice.microsoft.com/lib/beta/hosted/office.js
@types/office-js-preview
office-ui-fabric-js@1.4.0/dist/css/fabric.min.css
office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css
core-js@2.4.1/client/core.min.js
@types/core-js
jquery@3.1.1
@types/jquery@3.3.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment