PowerPoint アドインPowerPoint add-ins

PowerPoint のアドインを使って、Windows、iOS、Office Online、Mac などのプラットフォームでユーザーのプレゼンテーションのための魅力的なソリューションをビルドすることができます。You can use PowerPoint add-ins to build engaging solutions for your users' presentations across platforms including Windows, iOS, Office Online, and Mac. You can create one of two types of add-ins: PowerPoint のアドインの 2 つの種類を作成することができます。You can create two types of PowerPoint add-ins:

  • コンテンツ アドインを使うと、プレゼンテーションに HTML5 の動的コンテンツが追加されます。たとえば PowerPoint のための LucidChart ダイアグラム アドインでは、これを使って LucidChart からデッキにインタラクティブな図を挿入することができます。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.

  • 作業ウィンドウ アドイン を使えば、サービスを介して、参照情報を取り込んだり、プレゼンテーションにデータを挿入したりすることができます。Use task pane add-ins to bring in reference information or insert data into the slide via a service. For example, see the Shutterstock Images add-in, which you can use to add professional photos to your presentation. たとえば Shutterstock イメージ 像 アドインでは、これを使ってプロの写真をプレゼンテーションに追加することができます。Use task pane add-ins to bring in reference information or insert data into the slide via a service. For example, see the Shutterstock Images add-in, which you can use to add professional photos to your presentation.

PowerPoint アドインのシナリオPowerPoint add-in scenarios

この記事でデモンストレーションするコード例では、PowerPoint のアドインの開発のための基本的なタスクをいくつか示します。The code examples in the article show you some basic tasks for developing content add-ins for PowerPoint. 次の点に注意してください。Please note the following in 2nd_ProjServ_12 Beta 2:

  • 情報を表示するために、これらの例では Visual Studio の Office アドイン プロジェクト テンプレートに含まれる app.showNotification 関数を使用します。To display information, these examples use the app.showNotification function, which is included in the Visual Studio Office Add-ins project templates. アドインの開発に Visual Studio を使用している場合、独自のコードでshowNotification を置き換える必要があります。If you aren't using Visual Studio to develop your add-in, you'll need replace the showNotification function with your own code.

  • これらの例のうちいくつかでは、これらの関数の範囲を超えて宣言されている Globals も使用しています。 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};

  • これらの例を使用するには、アドインプロジェクトが Office.js v1.1 以降のライブラリを参照する必要がありますしている必要がありますTo use these examples, your add-in project must reference Office.js v1.1 library or later.

プレゼンテーションのアクティブ ビューを検出し、ActiveViewChanged イベントを処理します。Detect the presentation's active view and handle the ActiveViewChanged event

コンテンツ アドインをビルドする場合は、プレゼンテーションのアクティブ ビューを取得して、 Office.Initialize ハンドラーの一部として、ActiveViewChanged イベントを処理する必要があります。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.

注意

PowerPoint Online では、スライドショーモードが新しいセッションとして扱われるため、 Document.ActiveViewChanged イベントは発生しません。In PowerPoint Online, the Document.ActiveViewChanged event will never fire as Slide Show mode is treated as a new session. In this case, the add-in must fetch the active view on load, as noted below. この場合、次のコードサンプルに示すように、アドインでロード時にアクティブ ビューをフェッチする必要があります。In this case, the add-in must fetch the active view on load, as shown in the following code sample.

コードサンプルは次の通りです。In the following code sample:

  • getActiveFileView 関数は、プレゼンテーションの現在のビューが "編集" ビュー ([標準][アウトライン表示] などの、スライドを編集できるビュー) なのか "読み取り" ビュー (** [スライド ショー] ** や ** [閲覧表示]**) なのかを返す Document.getActiveViewAsync メソッドを呼び出します。The getFileView 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) view.

  • registerActiveViewChanged 関数は、 addHandlerAsync メソッドを呼び出してDocument.ActiveViewChanged イベントのハンドラを登録します。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);
            }
        });
}

次のコードサンプルでは、​​getSelectedRange関数は Document.getSelectedDataAsync メソッドを呼び出して、asyncResult.value から返される JSON オブジェクトを取得します。そのオブジェクトには、slides という名前の配列が含まれています。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. *スライド* 配列には、選択した範囲のスライド(複数のスライドが選択されていない場合は現在のスライド)の ID、タイトル、およびインデックスが含まれます。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). また選択範囲内の最初のスライド ID をグローバル変数に保存します。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));
        }
    });
}

次のコードサンプルでは、goToFirstSlide 関数は、 Document.goToByIdAsync メソッドを呼び出して、先で示したgetSelectedRange 関数で識別された最初のスライドに移動します。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");
        }
    });
}

次のコードサンプルでは、goToSlideByIndex 関数はDocument.goToByIdAsync メソッドを呼び出して、プレゼンテーション内の次のスライドに移動します。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");
        }
    });
}

プレゼンテーションの URL を取得するGet the URL of the presentation

次のコードサンプルでは、getFileUrl関数は Document.getFileProperties メソッドを呼び出してプレゼンテーションファイルの URL を取得します。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);
        }
    });
}

関連項目See also