|
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 |