PowerPoint アドインPowerPoint add-ins

PowerPoint のアドインを使って、Windows、iOS、Office Online、Mac などのプラットフォームでユーザーのプレゼンテーションのための魅力的なソリューションをビルドすることができます。アドインの 2 種類のうちいずれかを作成できます: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:

  • コンテンツ アドインを使うと、プレゼンテーションに 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.
  • 作業ウィンドウ アドインを使えば、サービスを介して、参照情報を取り込んだり、スライドにデータを挿入したりすることができます。たとえば 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.

情報を表示するために、これらの例は app.showNotification 関数に依存しています。これは、Visual Studio の Office アドイン プロジェクト テンプレートに含まれています。アドインを開発するのに Visual Studio を使用していない場合は、showNotification 関数を独自のコードに置き換える必要があります。これらの例のうちいくつかは、これらの関数 var globals = {activeViewHandler:0, firstSlideId:0}; の範囲外で宣言されたこの globals オブジェクトにも依存しています。To display information, these examples depend on the app.showNotification function, which is included in the Visual Studio Office Add-ins project templates. If you aren't using Visual Studio to develop your add-in, you'll need replace the showNotification function with your own code. Several of these examples also depend on this globals object that is declared outside of the scope of these functions: var globals = {activeViewHandler:0, firstSlideId:0};

これらのコード例では、プロジェクトが Office.js v1.1 以降のライブラリを参照している必要があります。These code examples require your project to 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.

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

  • registerActiveViewChanged 関数は、Document.ActiveViewChanged イベントのハンドラーを登録するための addHandlerAsync メソッドを呼び出します。The registerActiveViewChanged function calls the addHandlerAsync method to register a handler for the Document.ActiveViewChanged event.

注意

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.

//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 オブジェクトを取得します。そのオブジェクトには、選択範囲のスライド (または現在のスライドのみ) の ID、タイトル、インデックスが入った "slides" という名前の配列が含まれています。この関数はまた、選択範囲の最初のスライドの ID をグローバル変数に保存します。The getSelectedRange function calls the Document.getSelectedDataAsync method to get a JSON object returned by asyncResult.value, which contains an array named "slides" that contains the ids, titles, and indexes of selected range of slides (or just the current slide). 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 関数が格納した最初のスライドの ID に移動します。The goToFirstSlide function calls the Document.goToByIdAsync method to go to the id of the first slide stored by the getSelectedRange function above.

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