PowerPoint-Add-Ins

Mit PowerPoint-Add-Ins können Sie ansprechende Lösungen für die Präsentationen Ihrer Benutzer auf unterschiedlichen Plattformen wie Windows, iPad, Mac und im Browser erstellen. Sie können zwei Typen von PowerPoint-Add-Ins erstellen:

  • Verwenden Sie Inhalts-Add-Ins, um dynamische HTML5-Inhalte zu Ihren Präsentationen hinzuzufügen. Sehen Sie sich beispielsweise das Add-In LucidChart-Diagramme für PowerPoint an, das Sie verwenden können, um ein interaktives Diagramm aus LucidChart in Ihr Deck einzufügen.

  • Verwenden Sie Aufgabenbereich-Add-Ins, um Referenzinformationen oder Daten über einen Dienst in die Präsentation einzufügen. Schauen Sie sich zum Beispiel das Add-In Pexels – Free Stock Photos, mit dem Sie professionelle Fotos zu Ihrer Präsentation hinzufügen können.

Szenarien mit PowerPoint-Add-Ins

Die Codebeispiele in diesem Artikel zeigen einige grundlegende Aufgaben zum Entwickeln von Add-Ins für PowerPoint. Beachten Sie Folgendes:

  • Zum Anzeigen von Informationen verwenden diese Beispiele die app.showNotification-Funktion, die in den Projektvorlagen von Visual Studio-Office-Add-Ins enthalten ist. Wenn Sie Ihr Add-In nicht mit Visual Studio entwickeln, müssen Sie die showNotification-Funktion durch Ihren eigenen Code ersetzen.

  • In einigen dieser Beispiele wird auch ein Globals -Objekt verwendet, das über den Bereich dieser Funktionen hinaus deklariert wird: var Globals = {activeViewHandler:0, firstSlideId:0};

  • Um diese Beispiele zu verwenden, muss Ihr Add-In-Projekt auf die Office.js-Bibliothek, Version 1.1 oder höher, verweisen.

Ermitteln der aktiven Ansicht der Präsentation und Behandeln des ActiveViewChanged-Ereignisses

Wenn Sie ein Inhalts-Add-In erstellen, müssen Sie die im aktive Ansicht der Präsentation abrufen und im Rahmen des Office.Initialize-Handlers das ActiveViewChanged-Ereignis behandeln.

Hinweis

In PowerPoint im Web wird das Document.ActiveViewChanged-Ereignis nie ausgelöst, da der Bildschirmpräsentationsmodus als neue Sitzung behandelt wird. In diesem Fall muss das Add-In die aktive Ansicht beim Laden abrufen, wie im folgenden Codebeispiel beschrieben.

Gehen Sie im folgenden Codebeispiel folgendermaßen vor:

  • Die getActiveFileView Funktion ruft die Document.getActiveViewAsync-Methode auf, um zurückzugeben, ob die aktuelle Ansicht der Präsentation "bearbeiten" (eine der Ansichten, in denen Sie Folien bearbeiten können, z. B. Normal - oder Gliederungsansicht) oder "lesen" (Bildschirmpräsentation oder Leseansicht) ist.

  • Die registerActiveViewChanged Funktion ruft die addHandlerAsync-Methode auf, um einen Handler für das Document.ActiveViewChanged-Ereignis zu registrieren.

//general Office.initialize function. Fires on load of the add-in.
Office.initialize = function(){

    //Gets whether the current view is edit or read.
    const currentView = getActiveFileView();

    //register for the active view changed handler
    registerActiveViewChanged();

    //render the content based off of the currentView
    //....
}

function getActiveFileView()
{
    Office.context.document.getActiveViewAsync(function (asyncResult) {
        if (asyncResult.status == "failed") {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        }
        else {
            app.showNotification(asyncResult.value);
        }
    });

}

function registerActiveViewChanged() {
    Globals.activeViewHandler = function (args) {
        app.showNotification(JSON.stringify(args));
    }

    Office.context.document.addHandlerAsync(Office.EventType.ActiveViewChanged, Globals.activeViewHandler,
        function (asyncResult) {
            if (asyncResult.status == "failed") {
                app.showNotification("Action failed with error: " + asyncResult.error.message);
            }
            else {
                app.showNotification(asyncResult.status);
            }
        });
}

In dem folgenden Codebeispiel ruft die getSelectedRange-Funktion die Document.getSelectedDataAsync-Methode auf, um das von asyncResult.value zurückgegebene JSON-Objekt abzurufen, das ein Array mit dem Namen slides enthält. Das slides-Array enthält die IDs, Titel und Indizes des ausgewählten Bereichs von Folien (oder die aktuelle Folie, wenn nicht mehrere Folien ausgewählt sind). Es wird auch die ID der ersten Folie im ausgewählten Bereich in einer globalen Variablen gespeichert.

function getSelectedRange() {
    // Get the id, title, and index of the current slide (or selected slides) and store the first slide id */
    Globals.firstSlideId = 0;

    Office.context.document.getSelectedDataAsync(Office.CoercionType.SlideRange, function (asyncResult) {
        if (asyncResult.status == "failed") {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        }
        else {
            Globals.firstSlideId = asyncResult.value.slides[0].id;
            app.showNotification(JSON.stringify(asyncResult.value));
        }
    });
}

In dem folgenden Codebeispiel ruft die goToFirstSlide-Funktion die Document.goToByIdAsync-Methode auf, um zur ersten Folie zu navigieren, die von der zuvor dargestellten getSelectedRange-Funktion identifiziert wurde.

function goToFirstSlide() {
    Office.context.document.goToByIdAsync(Globals.firstSlideId, Office.GoToType.Slide, function (asyncResult) {
        if (asyncResult.status == "failed") {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        }
        else {
            app.showNotification("Navigation successful");
        }
    });
}

Im folgenden Codebeispiel ruft die goToSlideByIndex-Funktion die Document.goToByIdAsync-Methode auf, um zur nächsten Folie in der Präsentation zu navigieren.

function goToSlideByIndex() {
    const goToFirst = Office.Index.First;
    const goToLast = Office.Index.Last;
    const goToPrevious = Office.Index.Previous;
    const goToNext = Office.Index.Next;

    Office.context.document.goToByIdAsync(goToNext, Office.GoToType.Index, function (asyncResult) {
        if (asyncResult.status == "failed") {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        }
        else {
            app.showNotification("Navigation successful");
        }
    });
}

Abrufen der URL der Präsentation

Im folgenden Codebeispiel ruft die Funktion die getFileUrlDocument.getFileProperties-Methode auf, um die URL der Präsentationsdatei abzurufen.

function getFileUrl() {
    //Get the URL of the current file.
    Office.context.document.getFilePropertiesAsync(function (asyncResult) {
        const fileUrl = asyncResult.value.url;
        if (fileUrl == "") {
            app.showNotification("The file hasn't been saved yet. Save the file and try again");
        }
        else {
            app.showNotification(fileUrl);
        }
    });
}

Erstellen einer Präsentation

Ihr Add-In kann unabhängig von der PowerPoint-Instanz, in dem das Add-In derzeit ausgeführt wird, eine neue Präsentation erstellen. Der PowerPoint-Namespace verfügt über die createPresentation-Methode für diesen Zweck. Wenn diese Methode aufgerufen wird, wird die neue Präsentation sofort geöffnet und in einer neuer Instanz von PowerPoint angezeigt. Das Add-In bleibt geöffnet und wird mit der vorherigen Präsentation ausgeführt.

PowerPoint.createPresentation();

Die Methode createPresentation kann auch eine Kopie einer vorhandenen Präsentation erstellen. Die Methode akzeptiert eine base64-codierte Zeichenfolgendarstellung der PPTX-Datei als optionalen Parameter. Die daraus resultierende Präsentation ist eine Kopie dieser Datei, vorausgesetzt, dass das Zeichenfolgenargument eine gültige PPTX-Datei ist. Die FileReader-Klasse kann verwendet werden, um eine Datei in die erforderliche base64-codierte Zeichenfolge zu konvertieren, wie im folgenden Beispiel gezeigt wird.

const myFile = document.getElementById("file");
const reader = new FileReader();

reader.onload = function (event) {
    // strip off the metadata before the base64-encoded string
    const startIndex = reader.result.toString().indexOf("base64,");
    const copyBase64 = reader.result.toString().substr(startIndex + 7);

    PowerPoint.createPresentation(copyBase64);
};

// read in the file as a data URL so we can parse the base64-encoded string
reader.readAsDataURL(myFile.files[0]);

Siehe auch