PowerPoint-Add-InsPowerPoint 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.You can use PowerPoint add-ins to build engaging solutions for your users' presentations across platforms including Windows, iOS, Mac, and in a browser. Sie können zwei Typen von PowerPoint-Add-Ins erstellen:You can create two types of PowerPoint add-ins:

  • 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.Use content add-ins to add dynamic HTML5 content to your presentations. For example, see the LucidChart Diagrams for PowerPoint add-in, which you can use to inject an interactive diagram from LucidChart into your deck.

  • Verwenden Sie Aufgabenbereich-Add-Ins, um Referenzinformationen oder Daten über einen Dienst in die Präsentation einzufügen. Use task pane add-ins to bring in reference information or insert data into the presentation via a service. Sehen Sie sich beispielsweise das Add-In Pixton Comic Characters an, das Sie zum Hinzufügen von professionellen Fotos zu Ihrer Präsentation verwenden können.For example, see the Pixton Comic Characters add-in, which you can use to add professional photos to your presentation.

Szenarien mit PowerPoint-Add-InsPowerPoint add-in scenarios

Die Codebeispiele in diesem Artikel zeigen einige grundlegende Aufgaben zum Entwickeln von Add-Ins für PowerPoint.The code examples in this article demonstrate some basic tasks for developing add-ins for PowerPoint. Beachten Sie Folgendes:Please note the following:

  • Zum Anzeigen von Informationen verwenden diese Beispiele die app.showNotification-Funktion, die in den Projektvorlagen von Visual Studio-Office-Add-Ins enthalten ist.To display information, these examples use the app.showNotification function, which is included in the Visual Studio Office Add-ins project templates. Wenn Sie Ihr Add-In nicht mit Visual Studio entwickeln, müssen Sie die showNotification-Funktion durch Ihren eigenen Code ersetzen.If you aren't using Visual Studio to develop your add-in, you'll need replace the showNotification function with your own code.

  • Einige dieser Beispiele verwenden auch ein Globals-Objekt, das außerhalb des Gültigkeitsbereichs dieser Funktionen deklariert wird: var Globals = {activeViewHandler:0, firstSlideId:0};Several of these examples also use a Globals object that is declared beyond the scope of these functions as: 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.To use these examples, your add-in project must reference Office.js v1.1 library or later.

Ermitteln der aktiven Ansicht der Präsentation und Behandeln des ActiveViewChanged-EreignissesDetect the presentation's active view and handle the ActiveViewChanged event

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.If you are building a content add-in, you will need to get the presentation's active view and handle the ActiveViewChanged event, as part of your Office.Initialize handler.

Hinweis

In PowerPoint im Web wird das Document.ActiveViewChanged-Ereignis nie ausgelöst, da der Bildschirmpräsentationsmodus als neue Sitzung behandelt wird.In PowerPoint on the web, the Document.ActiveViewChanged event will never fire as Slide Show mode is treated as a new session. In diesem Fall muss das Add-In die aktive Ansicht beim Laden abrufen, wie im folgenden Codebeispiel beschrieben.In this case, the add-in must fetch the active view on load, as shown in the following code sample.

Gehen Sie im folgenden Codebeispiel folgendermaßen vor:In the following code sample:

  • Die Funktion getActiveFileView ruft die Methode Document.getActiveViewAsync auf, um zurückzugeben, ob die aktuelle Ansicht der Präsentation „Bearbeiten" (alle Ansichten, in denen Sie Folien bearbeiten können, z. B. die Ansicht Normal oder die Gliederungsansicht) oder „Lesen" ist ( Bildschirmpräsentation oder Leseansicht)anzeigen.The getActiveFileView function calls the Document.getActiveViewAsync method to return whether the presentation's current view is "edit" (any of the views in which you can edit slides, such as Normal or Outline View) or "read" (Slide Show or Reading View).

  • Die registerActiveViewChanged-Funktion ruft die AddHandlerAsync-Methode auf, um einen Handler für das Document.ActiveViewChanged-Ereignis zu registrieren.The registerActiveViewChanged function calls the addHandlerAsync method to register a handler for the Document.ActiveViewChanged event.

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

    //Gets whether the current view is edit or read.
    var 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.In the following code sample, the getSelectedRange function calls the Document.getSelectedDataAsync method to get the JSON object returned by asyncResult.value, which contains an array named slides. 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).The slides array contains the ids, titles, and indexes of selected range of slides (or of the current slide, if multiple slides are not selected). Es wird auch die ID der ersten Folie im ausgewählten Bereich in einer globalen Variablen gespeichert.It also saves the id of the first slide in the selected range to a global variable.

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.In the following code sample, the goToFirstSlide function calls the Document.goToByIdAsync method to navigate to the first slide that was identified by the getSelectedRange function shown previously.

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.In the following code sample, the goToSlideByIndex function calls the Document.goToByIdAsync method to navigate to the next slide in the presentation.

function goToSlideByIndex() {
    var goToFirst = Office.Index.First;
    var goToLast = Office.Index.Last;
    var goToPrevious = Office.Index.Previous;
    var 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äsentationGet the URL of the presentation

Im folgenden Codebeispiel ruft die getFileUrl-Funktion die Document.getFileProperties-Methode auf, um die URL der Präsentationsdatei abzurufen.In the following code sample, the getFileUrl function calls the Document.getFileProperties method to get the URL of the presentation file.

function getFileUrl() {
    //Get the URL of the current file.
    Office.context.document.getFilePropertiesAsync(function (asyncResult) {
        var 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äsentationCreate a presentation

Ihr Add-In kann unabhängig von der PowerPoint-Instanz, in dem das Add-In derzeit ausgeführt wird, eine neue Präsentation erstellen.Your add-in can create a new presentation, separate from the PowerPoint instance in which the add-in is currently running. Der PowerPoint-Namespace verfügt über die createPresentation-Methode für diesen Zweck.The PowerPoint namespace has the createPresentation method for this purpose. Wenn diese Methode aufgerufen wird, wird die neue Präsentation sofort geöffnet und in einer neuer Instanz von PowerPoint angezeigt.When this method is called, the new presentation is immediately opened and displayed in a new instance of PowerPoint. Das Add-In bleibt geöffnet und wird mit der vorherigen Präsentation ausgeführt.Your add-in remains open and running with the previous presentation.

PowerPoint.createPresentation();

Die Methode createPresentation kann auch eine Kopie einer vorhandenen Präsentation erstellen.The createPresentation method can also create a copy of an existing presentation. Die Methode akzeptiert eine base64-codierte Zeichenfolgendarstellung der PPTX-Datei als optionalen Parameter.The method accepts a base64-encoded string representation of an .pptx file as an optional parameter. Die daraus resultierende Präsentation ist eine Kopie dieser Datei, vorausgesetzt, dass das Zeichenfolgenargument eine gültige PPTX-Datei ist.The resulting presentation will be a copy of that file, assuming the string argument is a valid .pptx file. Die FileReader-Klasse kann verwendet werden, um eine Datei in die erforderliche base64-codierte Zeichenfolge zu konvertieren, wie im folgenden Beispiel gezeigt wird.The FileReader class can be used to convert a file into the required base64-encoded string, as demonstrated in the following example.

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

reader.onload = function (event) {
    // strip off the metadata before the base64-encoded string
    var startIndex = reader.result.toString().indexOf("base64,");
    var 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 auchSee also