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:

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:

    let 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 aktive Ansicht der Präsentation abrufen und das ActiveViewChanged Ereignis als Teil Ihres Office.onReady Handlers 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.

Beachten Sie Folgendes zum Codebeispiel:

  • Die getActiveFileView Funktion ruft die Document.getActiveViewAsync-Methode auf, um zurückzugeben, ob die aktuelle Ansicht der Präsentation "bearbeiten" (alle 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.onReady function. Called after the add-in loads and Office JS is initialized.
Office.onReady(function() {
    // Get 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 === Office.AsyncResultStatus.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 === Office.AsyncResultStatus.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 Folienbereichs (oder der aktuellen Folie, wenn mehrere Folien nicht ausgewählt sind). Außerdem wird die ID der ersten Folie im ausgewählten Bereich in einer globalen Variablen gespeichert.

function getSelectedRange() {
    // Gets 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 === Office.AsyncResultStatus.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 === Office.AsyncResultStatus.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 === Office.AsyncResultStatus.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 getFileUrl Funktion die Document.getFileProperties-Methode auf, um die URL der Präsentationsdatei abzurufen.

function getFileUrl() {
    // Gets 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 einer .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 veranschaulicht.

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