次の方法で共有


複数のメッセージで Outlook アドインをアクティブ化する

アイテムの複数選択機能を使用すると、Outlook アドインで、選択した複数のメッセージに対する操作を 1 回でアクティブ化して実行できるようになりました。 Customer Relationship Management (CRM) システムへのメッセージのアップロードや多数の項目の分類など、特定の操作を 1 回のクリックで簡単に完了できるようになりました。

次のセクションでは、読み取りモードで複数のメッセージの件名行を取得するようにアドインを構成する方法について説明します。

注:

項目の複数選択機能のサポートが 要件セット 1.13 で導入され、追加の項目プロパティが後続の要件セットで使用できるようになりました。 この要件セットをサポートする クライアントおよびプラットフォーム を参照してください。

環境を設定する

Office アドイン用 Yeoman ジェネレーターを使用してアドイン プロジェクトを作成するには、Outlook クイック スタートを完了します。

マニフェストを構成する

  1. 任意のコード エディターで、作成した Outlook クイック スタート プロジェクトを開きます。

  2. プロジェクトのルートにある manifest.json ファイルを開きます。

  3. "authorization.permissions.resourceSpecific" 配列で、"name" プロパティの値を "Mailbox.ReadWrite.User" に変更します。 完了すると、次のようになります。

    "authorization": {
        "permissions": {
            "resourceSpecific": [
                {
                    "name": "Mailbox.ReadWrite.User",
                    "type": "Delegated"
                }
            ]
        }
    },
    
  4. "extensions.runtimes" 配列の最初のオブジェクトで、次の変更を行います。

    1. "requirements.capabilities.minVersion" プロパティを "1.13" に変更します。
    2. 同じ "actions" オブジェクトに "supportsNoItemContext" プロパティを追加し、 trueに設定します。
    3. 同じ "actions" オブジェクトに "multiselect" プロパティを追加し、 trueに設定します。

    変更を行った後、コードは次のようになります。

    "runtimes": [
        {
            "requirements": {
                "capabilities": [
                    {
                        "name": "Mailbox",
                        "minVersion": "1.13"
                    }
                ]
            },
            "id": "TaskPaneRuntime",
            "type": "general",
            "code": {
                "page": "https://localhost:3000/taskpane.html"
            },
            "lifetime": "short",
            "actions": [
                {
                    "id": "TaskPaneRuntimeShow",
                    "type": "openPage",
                    "pinnable": false,
                    "view": "dashboard",
                    "supportsNoItemContext": true,
                    "multiselect": true
                }
            ]
        },
        ...
    ]
    
  5. "id" が "CommandsRuntime" である "extensions.runtimes" 配列の 2 番目のオブジェクトを削除します。

  6. "extensions.ribbons.tabs.controls" 配列で、"id" が "ActionButton" である 2 番目のオブジェクトを削除します。

  7. 変更内容を保存します。

注:

アドインでアイテムの複数選択機能を有効にした場合、マニフェストで明示的に構成されていない場合でも、アドインは自動的に アイテム コンテキストなしの 機能をサポートします。

作業ウィンドウを構成する

項目の複数選択は、 SelectedItemsChanged イベントに依存して、メッセージが選択または選択解除されるタイミングを決定します。 このイベントには、作業ウィンドウの実装が必要です。

  1. ./src/taskpane フォルダーから、 taskpane.htmlを開きます。

  2. <body> 要素で、<メイン> 要素全体を次のマークアップに置き換えます。

    <main id="app-body" class="ms-welcome__main">
        <h2 class="ms-font-xl">Retrieve the subject line of multiple messages with one click!</h2>
        <ul id="selected-items"></ul>
        <div role="button" id="run" class="ms-welcome__action ms-Button ms-Button--hero ms-font-xl">
            <span class="ms-Button-label">Run</span>
        </div>
    </main>
    
  3. 変更内容を保存します。

SelectedItemsChanged イベントのハンドラーを実装する

SelectedItemsChanged イベントが発生したときにアドインに警告するには、addHandlerAsync メソッドを使用してイベント ハンドラーを登録する必要があります。

  1. ./src/taskpane フォルダーから、 taskpane.jsを開きます。

  2. Office.onReady() コールバック関数で、既存のコードを次のように置き換えます。

    if (info.host === Office.HostType.Outlook) {
        document.getElementById("sideload-msg").style.display = "none";
        document.getElementById("app-body").style.display = "flex";
        document.getElementById("run").onclick = run;
    
        // Register an event handler to identify when messages are selected.
        Office.context.mailbox.addHandlerAsync(Office.EventType.SelectedItemsChanged, run, asyncResult => {
          if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            console.log(asyncResult.error.message);
            return;
          }
    
          console.log("Event handler added.");
        });
    }
    

選択したメッセージの件名行を取得する

イベント ハンドラーを登録したので、 getSelectedItemsAsync メソッドを呼び出して、選択したメッセージの件名行を取得し、作業ウィンドウにログを記録します。 getSelectedItemsAsync メソッドを使用して、アイテム ID、アイテムの種類 (Messageがこの時点でサポートされている唯一の型)、アイテム モード (ReadまたはCompose) などの他のメッセージ プロパティを取得することもできます。

  1. taskpane.jsで、run関数に移動し、次のコードを挿入します。

    // Clear list of previously selected messages, if any.
    const list = document.getElementById("selected-items");
    while (list.firstChild) {
        list.removeChild(list.firstChild);
    }
    
    // Retrieve the subject line of the selected messages and log it to a list in the task pane.
    Office.context.mailbox.getSelectedItemsAsync(asyncResult => {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            console.log(asyncResult.error.message);
            return;      
        }
    
        asyncResult.value.forEach(item => {
            const listItem = document.createElement("li");
            listItem.textContent = item.subject;
            list.appendChild(listItem);
        });
    });
    
  2. 変更内容を保存します。

試してみる

  1. ターミナルから、プロジェクトのルート ディレクトリで次のコードを実行します。 これにより、ローカル Web サーバーが起動し、アドインがサイドロードされます。

    npm start
    

    ヒント

    アドインが自動的にサイドロードされない場合は、「 テスト用の Outlook アドインをサイドロード する」の手順に従って、Outlook で手動でサイドロードします。

  2. Outlook で、閲覧ウィンドウが有効になっていることを確認します。 閲覧ウィンドウを有効にするには、「閲覧ウィンドウを 使用してメッセージをプレビューするように構成する」を参照してください。

  3. 受信トレイに移動し、複数のメッセージを選択するには、 Ctrl キー を押しながらメッセージを選択します。

  4. リボンから [ タスクウィンドウの表示 ] を選択します。

  5. 作業ウィンドウで、[ 実行 ] を選択して、選択したメッセージの件名行の一覧を表示します。

    選択した複数のメッセージから取得された件名行のサンプル リスト。

  6. ローカル Web サーバーを停止してアドインをアンインストールする場合は、該当する手順に従います。

    • サーバーを停止するには、次のコマンドを実行します。 npm startを使用した場合は、次のコマンドもアドインをアンインストールする必要があります。

      npm stop
      
    • アドインを手動でサイドロードした場合は、「 サイドロードされたアドインを削除する」を参照してください。

項目の複数選択の動作と制限事項

アイテムの複数選択では、読み取りモードと新規作成モードの両方で Exchange メールボックス内のメッセージのみがサポートされます。 Outlook アドインは、次の条件が満たされた場合にのみ、複数のメッセージに対してアクティブ化されます。

  • メッセージは、一度に 1 つの Exchange メールボックスから選択する必要があります。 Exchange 以外のメールボックスはサポートされていません。
  • メッセージは、一度に 1 つのメールボックス フォルダーから選択する必要があります。 スレッド ビューが有効になっていない限り、アドインが複数のメッセージを別のフォルダーに配置している場合はアクティブ化されません。 詳細については、「 会話での複数選択」を参照してください。
  • アドインは、 SelectedItemsChanged イベントを検出するために作業ウィンドウを実装する必要があります。
  • Outlook の閲覧ウィンドウ を有効にする必要があります。 ただし、項目の複数選択機能がマニフェストの項目なしのコンテキスト機能を使用して有効になっている場合は例外です。 詳細については、「 閲覧ウィンドウを有効にしたり、メッセージを選択せずに Outlook アドインをアクティブ化する」を参照してください。
  • 一度に最大 100 個のメッセージを選択できます。

注:

会議の招待と応答は、予定ではなくメッセージと見なされるため、選択に含めることができます。

会話での複数選択

アイテムの複数選択は、メールボックスまたは特定のフォルダーで有効になっているかどうかに関係なく 、会話ビュー をサポートします。 次の表では、会話が展開または折りたたまれた場合、メッセージ交換ヘッダーが選択されたとき、および会話メッセージが現在表示されているフォルダーとは異なるフォルダーにある場合の予期される動作について説明します。

Selection 展開された会話ビュー 折りたたまれた会話ビュー
メッセージ交換ヘッダーが選択されている メッセージ交換ヘッダーが選択されている唯一の項目である場合、マルチ選択をサポートするアドインはアクティブになりません。 ただし、他のヘッダー以外のメッセージも選択されている場合、アドインは、選択したヘッダーではなく、それらでのみアクティブ化されます。 動作は、Outlook クライアントによって異なります。

Windows (クラシック) および Mac 上の Outlook:
メッセージの選択には、最新のメッセージ (つまり、会話スタック内の最初のメッセージ) が含まれます。

会話内の最新のメッセージが現在表示されているフォルダーの別のフォルダーにある場合、現在のフォルダーにあるスタック内の後続のメッセージが選択に含まれます。

Outlook on the webと新しい Outlook on Windows:
メッセージ交換スタック内のすべてのメッセージが選択されます。 これには、現在表示されているフォルダー以外のフォルダーにある会話内のメッセージが含まれます。
会話スタック内の複数の選択されたメッセージは、現在表示されているメッセージと同じフォルダーに配置されます 同じ会話で選択したすべてのメッセージが選択に含まれます。 該当なし。 メッセージ交換スタックを展開して、メッセージから複数のメッセージを選択する必要があります。
会話スタック内の複数の選択されたメッセージは、現在表示されているフォルダーとは異なるフォルダーに配置されます 同じ会話で選択したすべてのメッセージが選択に含まれます。 該当なし。 メッセージ交換スタックを展開して、メッセージから複数のメッセージを選択する必要があります。

注:

すべての Outlook クライアントで、異なる会話に属する複数のメッセージを選択することはできません。 別の会話が展開されている間に別の会話を展開すると、現在展開されている会話のビューが折りたたまれて、選択したメッセージはすべて選択解除されます。 ただし、同じ展開された会話から複数のメッセージと、会話の一部ではないメッセージを同時に選択できます。

複数選択アドインでの作業ウィンドウのピン留め

Outlook on the webおよび新しい Outlook on Windows では、複数選択アドインの作業ウィンドウが開くと、Outlook クライアントに自動的にピン留めされます。 ユーザーが別のメール アイテムに切り替えたり、作業ウィンドウからピン アイコンを選択した場合でも、 ピン 留めされたままになります。 作業ウィンドウを閉じるには、作業ウィンドウから [ 閉じる ] ボタンを選択する必要があります。

逆に、Outlook on Windows (クラシック) と Mac では、ユーザーが別のメール アイテムに切り替えても、作業ウィンドウは自動的にピン留めされ、閉じられません。

次の手順

選択した複数のメッセージに対してアドインを操作できるようになったので、アドインの機能を拡張し、ユーザー エクスペリエンスをさらに強化できます。 Microsoft Graph などのサービスで選択したメッセージのアイテム ID を使用して、より複雑な操作を実行する方法について説明します。

関連項目