Share via


Hinzufügen und Löschen von Folien in PowerPoint

Ein PowerPoint-Add-In kann der Präsentation Folien hinzufügen und optional angeben, welcher Folienmaster und welches Layout des Masters für die neue Folie verwendet wird. Das Add-In kann auch Folien löschen.

Die APIs zum Hinzufügen von Folien werden hauptsächlich in Szenarien verwendet, in denen die IDs der Folienmaster und Layouts in der Präsentation zur Codierungszeit bekannt sind oder zur Laufzeit in einer Datenquelle gefunden werden können. In einem solchen Szenario müssen Entweder Sie oder der Kunde eine Datenquelle erstellen und verwalten, die das Auswahlkriterium (z. B. die Namen oder Bilder von Folienmastern und Layouts) mit den IDs der Folienmaster und Layouts korreliert. Die APIs können auch in Szenarien verwendet werden, in denen der Benutzer Folien einfügen kann, die den Standardfolienmaster und das Standardlayout des Masters verwenden, und in Szenarien, in denen der Benutzer eine vorhandene Folie auswählen und eine neue Folie mit demselben Folienmaster und Layout (aber nicht demselben Inhalt) erstellen kann. Weitere Informationen hierzu finden Sie unter Auswählen des zu verwendenden Folienmasters und Layouts .

Hinzufügen einer Folie mit SlideCollection.add

Fügen Sie Folien mit der SlideCollection.add-Methode hinzu. Im Folgenden finden Sie ein einfaches Beispiel, in dem eine Folie hinzugefügt wird, die den Standardfolienmaster der Präsentation und das erste Layout dieses Masters verwendet. Die -Methode fügt am Ende der Präsentation immer neue Folien hinzu. Es folgt ein Beispiel.

async function addSlide() {
  await PowerPoint.run(async function(context) {
    context.presentation.slides.add();

    await context.sync();
  });
}

Auswählen des zu verwendenden Folienmasters und Layouts

Verwenden Sie den AddSlideOptions-Parameter , um zu steuern, welcher Folienmaster für die neue Folie verwendet wird und welches Layout im Master verwendet wird. Es folgt ein Beispiel. Bei diesem Code ist Folgendes zu beachten:

  • Sie können eine oder beide Eigenschaften des AddSlideOptions -Objekts einschließen.
  • Wenn beide Eigenschaften verwendet werden, muss das angegebene Layout zum angegebenen Master gehören, sonst wird ein Fehler ausgelöst.
  • Wenn die masterId Eigenschaft nicht vorhanden ist (oder ihr Wert eine leere Zeichenfolge ist), wird der Standardfolienmaster verwendet, und der layoutId muss ein Layout dieses Folienmasters sein.
  • Der Standardfolienmaster ist der Folienmaster, der von der letzten Folie in der Präsentation verwendet wird. (In dem ungewöhnlichen Fall, in dem die Präsentation derzeit keine Folien enthält, ist der Standardfolienmaster der erste Folienmaster in der Präsentation.)
  • Wenn die layoutId Eigenschaft nicht vorhanden ist (oder ihr Wert eine leere Zeichenfolge ist), wird das erste Layout des Masters verwendet, das masterId von angegeben wird.
  • Beide Eigenschaften sind Zeichenfolgen einer von drei möglichen Formen: nnnnnnnnnn,##mmmmmmmmm oder nnnnnnnmmmmmmmmmmm#, wobei nnnnnnnn die ID des Masters oder Layouts (in der Regel 10 Ziffern) und mmmmmmmmmmm die Erstellungs-ID des Masters oder Layouts ist (in der Regel 6 bis 10 Ziffern). Beispiele hierfür sind 2147483690#2908289500, 2147483690#und #2908289500.
async function addSlide() {
    await PowerPoint.run(async function(context) {
        context.presentation.slides.add({
            slideMasterId: "2147483690#2908289500",
            layoutId: "2147483691#2499880"
        });
    
        await context.sync();
    });
}

Es gibt keine praktische Möglichkeit, die ID oder Erstellungs-ID eines Folienmasters oder Layouts zu ermitteln. Aus diesem Grund können Sie den AddSlideOptions Parameter wirklich nur verwenden, wenn Sie die IDs zur Codierungszeit kennen oder ihr Add-In sie zur Laufzeit ermitteln kann. Da von Benutzern nicht erwartet werden kann, dass sie sich die IDs merken, benötigen Sie auch eine Möglichkeit, es dem Benutzer zu ermöglichen, Folien auszuwählen, z. B. anhand des Namens oder anhand eines Bilds, und dann jeden Titel oder jedes Bild mit der ID der Folie korrelieren.

Dementsprechend wird der AddSlideOptions Parameter hauptsächlich in Szenarien verwendet, in denen das Add-In für die Arbeit mit einem bestimmten Satz von Folienmastern und Layouts konzipiert ist, deren IDs bekannt sind. In einem solchen Szenario müssen Entweder Sie oder der Kunde eine Datenquelle erstellen und verwalten, die ein Auswahlkriterium (z. B. Folienmaster- und Layoutnamen oder Bilder) mit den entsprechenden IDs oder Erstellungs-IDs korreliert.

Lassen Sie den Benutzer eine passende Folie auswählen

Wenn Ihr Add-In in Szenarien verwendet werden kann, in denen die neue Folie dieselbe Kombination aus Folienmaster und Layout verwenden sollte, die von einer vorhandenen Folie verwendet wird, kann Ihr Add-In (1) den Benutzer auffordern, eine Folie auszuwählen, und (2) die IDs des Folienmasters und layouts lesen. Die folgenden Schritte zeigen, wie Sie die IDs lesen und eine Folie mit einem passenden Master und Layout hinzufügen.

  1. Erstellen Sie eine Funktion, um den Index der ausgewählten Folie abzurufen. Es folgt ein Beispiel. Bei diesem Code ist Folgendes zu beachten:

    • Sie verwendet die Office.context.document.getSelectedDataAsync-Methode der allgemeinen JavaScript-APIs.
    • Der Aufruf von getSelectedDataAsync ist in eine Promise-rückgabende Funktion eingebettet. Weitere Informationen dazu, warum und wie Dies geschieht, finden Sie unter Umschließen allgemeiner APIs in Funktionen zur Rückgabe von Zusagen.
    • getSelectedDataAsync gibt ein Array zurück, da mehrere Folien ausgewählt werden können. In diesem Szenario hat der Benutzer nur eine ausgewählt, sodass der Code die erste (0.) Folie erhält, die als einzige ausgewählt ist.
    • Der index Wert der Folie ist der 1-basierte Wert, den der Benutzer neben der Folie im Miniaturansichtenbereich sieht.
    function getSelectedSlideIndex() {
        return new OfficeExtension.Promise<number>(function(resolve, reject) {
            Office.context.document.getSelectedDataAsync(Office.CoercionType.SlideRange, function(asyncResult) {
                try {
                    if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                        reject(console.error(asyncResult.error.message));
                    } else {
                        resolve(asyncResult.value.slides[0].index);
                    }
                } 
                catch (error) {
                    reject(console.log(error));
                }
            });
        });
    }
    
  2. Rufen Sie Ihre neue Funktion in PowerPoint.run() der Hauptfunktion auf, die die Folie hinzufügt. Es folgt ein Beispiel.

    async function addSlideWithMatchingLayout() {
        await PowerPoint.run(async function(context) {
    
            let selectedSlideIndex = await getSelectedSlideIndex();
    
            // Decrement the index because the value returned by getSelectedSlideIndex()
            // is 1-based, but SlideCollection.getItemAt() is 0-based.
            const realSlideIndex = selectedSlideIndex - 1;
            const selectedSlide = context.presentation.slides.getItemAt(realSlideIndex).load("slideMaster/id, layout/id");
    
            await context.sync();
    
            context.presentation.slides.add({
                slideMasterId: selectedSlide.slideMaster.id,
                layoutId: selectedSlide.layout.id
            });
    
            await context.sync();
        });
    }
    

Löschen von Folien

Löschen Sie eine Folie, indem Sie einen Verweis auf das Slide-Objekt abrufen, das die Folie darstellt, und rufen Sie die -Methode auf Slide.delete . Es folgt ein Beispiel, in dem die 4. Folie gelöscht wird.

async function deleteSlide() {
    await PowerPoint.run(async function(context) {

        // The slide index is zero-based. 
        const slide = context.presentation.slides.getItemAt(3);
        slide.delete();

        await context.sync();
    });
}