次の方法で共有


Outlook コンテキスト アドインのアクティブ化のトラブルシューティング

Outlook コンテキスト アドインのアクティブ化は、アドインのアドイン専用マニフェストのアクティブ化ルールに基づいています。 現在選択されている項目の条件がアドインのアクティブ化ルールを満たしている場合、アプリケーションは Outlook UI でアドイン ボタンをアクティブ化して表示します (新規作成アドインのアドイン選択ウィンドウ、読み取りアドインのアドイン バー)。 しかし、アドインが想定どおりにアクティブ化されない場合、考えられる理由を探るために次のような点を調べる必要があります。

重要

エンティティベースのコンテキスト Outlook アドインは廃止されました。 別のソリューションとして、コンテキスト アドインに正規表現ルールを実装します。 これらのルールを実装する方法のガイダンスについては、「 コンテキスト Outlook アドイン」を参照してください。

ユーザー メールボックスは、少なくとも Exchange 2016 であるExchange Serverのバージョンですか?

まず、テストするユーザーの電子メール アカウントが、少なくとも Exchange 2016 であるExchange Serverのバージョンにあることを確認します。 Exchange 2016 以降にリリースされる特定の機能を使用している場合は、ユーザーのアカウントが適切なバージョンの Exchange にあることを確認してください。

次のいずれかの方法を使用して、Exchange のバージョンを確認できます。

  • Exchange Server 管理者に確認します。

  • Outlook on the webまたはモバイル デバイスでアドインをテストする場合は、スクリプト デバッガー (インターネット エクスプローラーに付属する JScript デバッガーなど) で、スクリプトの読み込み元の場所を指定するスクリプト タグの src 属性を探します。 パスには、部分文字列 owa/15.0.516.x/owa2/.が含まれている必要があります。ここで、15.0.516.x15.0.516.2 などのExchange Serverのバージョンを表します。

  • あるいは、Office.context.mailbox.diagnostics.hostVersion プロパティを使用してバージョンを確認することもできます。 Outlook on the web、モバイル デバイス、および新しい Outlook on Windows では、このプロパティはExchange Serverのバージョンを返します。

  • Outlook でアドインをテストできる場合は、Outlook オブジェクト モデルと Visual Basic エディターを使用する次の簡単なデバッグ手法を使用できます。

    1. まず、Outlook でマクロが有効化されていることを確認します。 [ファイル]、[オプション]、[セキュリティ センター]、[セキュリティ センターの設定]、[マクロの設定] の順に選択します。 セキュリティ センターで [すべてのマクロに対して警告を表示する] が選択されていることを確認します。 また、Outlook の起動時に [マクロを有効にする] を選択しておく必要があります。

    2. リボンの [開発] タブで [Visual Basic] を選択します。

      注:

      [ 開発者 ] タブが表示されない場合 See How to: Show the Developer Tab on the Ribbon to turn it on.

    3. Visual Basic エディターで、[表示][イミディエイト ウィンドウ] を選択します。

    4. イミディエイト ウィンドウに次のように入力し、Exchange Server のバージョンを表示します。 戻される値のメジャー バージョンは、15 以上である必要があります。

      • ユーザーのプロファイルに Exchange アカウントが 1 つだけある場合:
       ?Session.ExchangeMailboxServerVersion
      
      • 同じユーザー プロファイルに複数の Exchange アカウントがある場合 (emailAddress はユーザーのプライマリ STMP アドレスを含む文字列を表します):
       ?Session.Accounts.Item(emailAddress).ExchangeMailboxServerVersion
      

アドインは使用できますか?

Outlook on Windows (クラシック) と Mac では、CPU コアまたはメモリの使用しきい値の超過、クラッシュの許容、アドインのすべての正規表現を処理するための時間の長さなど、パフォーマンス上の理由によりアドインを使用できなくなる可能性があります。 この場合、Outlook on Windows (クラシック) と Mac では、アドインが使用できなくなったことを示す通知が表示されます。

注:

Outlook on Windows (クラシック) と Outlook on Mac のみがリソースの使用状況を監視します。 ただし、Outlook on Windows (クラシック) または Outlook on Mac で使用できなくなったアドインは、Outlook on the web、モバイル デバイス、および新しい Outlook on Windows でも使用できなくなります。

インストールされているアドインの一覧を確認して、アドインが使用可能かどうかを確認します。 Outlook でアドインを表示する方法については、「Outlook で アドインを使用する」を参照してください。

テストするアイテムが、アドインをサポートしているか? 選択したアイテムは、少なくとも Exchange 2016 Exchange Serverのバージョンによって配信されますか?

Outlook アドインが閲覧アドインであり、ユーザーがメッセージ (メール メッセージ、会議出席依頼、返信、キャンセルなど) や予定を表示するときにアクティブ化されるものである場合、これらのアイテムが通常はアドインをサポートしているとしても、選択しているアイテムが次のいずれかの場合は例外があります。 選択したアイテムが、 Outlook アドインがアクティブ化されない一覧の 1 つであるかどうかを確認します。

また、予定は常にリッチ テキスト形式で保存されるため、BodyAsHTMLの PropertyName 値を指定する ItemHasRegularExpressionMatch ルールは、プレーン テキストまたはリッチ テキスト形式で保存された予定またはメッセージに対してアドインをアクティブ化しません。

アドイン マニフェストが適切にインストールされているか? また Outlook にキャッシュ コピーがあるか?

注:

アクティブ化ルールに依存する Outlook アドイン機能は、アドインが Microsoft 365 用の統合アプリ マニフェストを使用する場合はサポートされません。

このシナリオは、Windows 上の従来の Outlook にのみ適用されます。 通常、メールボックスに Outlook アドインをインストールすると、Exchange Server は、アドイン マニフェストを指定の場所からその Exchange Server 上のメールボックスにコピーします。 Outlook が起動するたびに、そのメールボックスにインストールされているすべてのマニフェストが、次の場所にある一時キャッシュに読み込まれます。

%LocalAppData%\Microsoft\Office\16.0\WEF

たとえば、ユーザー John の場合、キャッシュは C:\Users\john\AppData\Local\Microsoft\Office\16.0\WEF にあります。

アドインがアイテムに対してアクティブ化されない場合は、マニフェストがExchange Serverに正しくインストールされていないか、Outlook が起動時にマニフェストを正しく読み取っていない可能性があります。 Exchange 管理センターを使用して、アドインがメールボックスにインストールされ、有効化されていることを確認し、必要に応じて Exchange Server を再起動します。

次の図は、Outlook にマニフェストの有効なバージョンがあるかどうかを確認する手順の概要を示しています。

マニフェストをチェックするフローチャート。

以下の手順では、その詳細を説明します。

  1. Outlook が開いている間にマニフェストを変更し、Visual Studio 2015 以降のバージョンの Visual Studio を使用してアドインを開発していない場合は、アドインをアンインストールし、Exchange 管理 センターを使用して再インストールする必要があります。

  2. Outlook を再起動し、Outlook でアドインがアクティブになっているかどうかをテストします。

  3. アドインがアクティブ化されない場合は、アドインのマニフェストの適切なキャッシュ コピーが Outlook にあるかどうかを確認します。 次のパスを確認します。

    %LocalAppData%\Microsoft\Office\16.0\WEF
    

    マニフェストは、次のサブフォルダーにあります。

    \<insert your guid>\<insert base 64 hash>\Manifests\<ManifestID>_<ManifestVersion>
    

    注:

    ユーザー John のメールボックスにインストールされているマニフェストへのパスの例を次に示します。

    C:\Users\john\appdata\Local\Microsoft\Office\16.0\WEF\{8D8445A4-80E4-4D6B-B7AC-D4E6AF594E73}\GoRshCWa7vW8+jhKmyiDhA==\Manifests\b3d7d9d5-6f57-437d-9830-94e2aaccef16_1.2
    

    テストしているアドインのマニフェストが、キャッシュされたマニフェストに含まれているかどうかを確認します。

  4. マニフェストがキャッシュにある場合は、このセクションの残りの部分をスキップして、このセクションの後で説明している、他に考えられる理由を検討します。

  5. マニフェストがキャッシュにない場合は、Outlook が Exchange Server から実際にマニフェストを読み取ったかどうかを確認します。 これを行うには、Windows イベント ビューアーを使用します。

    1. [Windows ログ][アプリケーション] を選択します。

    2. イベント ID が 63 に等しい比較的最近のイベントを探します。これは、Outlook が Exchange Server からマニフェストをダウンロードしたことを表します。

    3. Outlook がマニフェストを正常に読み取った場合、ログに記録されたイベントには次の説明が必要です。

      The Exchange web service request GetAppManifests succeeded.
      

      このセクションの残りの部分をスキップして、このセクションの後で説明している、他に考えられる理由を検討します。

  6. 成功したイベントが表示されない場合は、Outlook を閉じて、次のパス内のすべてのマニフェストを削除します。

    %LocalAppData%\Microsoft\Office\16.0\WEF\<insert your guid>\<insert base 64 hash>\Manifests\
    

    Outlook を起動し、Outlook でアドインがアクティブになっているかどうかをテストします。

  7. アドインがアクティブ化されない場合は、手順 3 に戻り、Outlook がマニフェストを適切に読み取ったかどうかを再度確認します。

アドイン マニフェストは有効か?

マニフェストの問題を検証し、トラブルシューティングを行う」を参照して、アドインのマニフェストの問題をデバッグしてください。

適切なアクティブ化ルールを使用しているか?

Office アドイン マニフェスト スキーマのバージョン 1.1 以降では、ユーザーが新規作成フォーム (新規作成アドイン) または読み取りフォーム (読み取りアドイン) にあるときにアクティブ化されるアドインを作成できます。 アドインをアクティブ化するフォームの種類に適した正しいアクティブ化ルールを指定してください。 たとえば、FormType 属性が Edit または ReadOrEdit に設定されている ItemIs ルールのみを使用して新規作成アドインをアクティブ化できます。また、作成アドインに ItemHasRegularExpressionMatch ルールなどの他の種類のルールを使用することはできません。

正規表現を使用している場合、正しく指定されていますか。

アクティブ化ルールの正規表現は、読み取りアドインの XML 形式アドイン専用マニフェスト ファイルの一部であるため、正規表現で特定の文字を使用する場合は、XML プロセッサがサポートする対応するエスケープ シーケンスに従ってください。 次の表は、このような特殊文字を示しています。

文字 説明 使用するエスケープ シーケンス
" 二重引用符 "
& アンパサンド &
' アポストロフィ apos を &します。
< より小さい <
> より大きい >

正規表現を使用する場合、読み取りアドインは、Outlook on the web、モバイル デバイス、または新しい Outlook on Windows ではアクティブになりますが、Outlook on Windows (クラシック) または Outlook on Mac ではアクティブ化されませんか?

Outlook on Windows (クラシック) と Outlook on Mac では、Outlook on the web、モバイル デバイス、新しい Outlook on Windows で使用される正規表現エンジンとは異なる正規表現エンジンが使用されます。 クラシック Outlook on Windows および Outlook on Mac では、Visual Studio 標準テンプレート ライブラリの一部として提供される C++ 正規表現エンジンが使用されます。 このエンジンは ECMAScript 5 標準に準拠しています。 Outlook on the web、モバイル デバイスおよび新しい Outlook on Windows では、JavaScript の一部である正規表現評価がブラウザーによって提供され、ECMAScript 5 のスーパーセットがサポートされています。

ほとんどの場合、これらの Outlook クライアントは、アクティブ化ルール内の同じ正規表現に対して同じ一致を検出しますが、例外があります。 たとえば、正規表現に定義済みの文字クラスに基づくカスタム文字クラスが含まれている場合、Outlook on Windows (クラシック) と Outlook on Mac は、Outlook on the web、モバイル デバイス、および新しい Outlook on Windows とは異なる結果を返す場合があります。 たとえば、その中に [\d\w] ショートハンド文字クラスを含む文字クラスは、異なる結果を返します。 この場合、異なるアプリケーションで異なる結果を回避するには、代わりに (\d|\w) を使用します。

正規表現を詳細にテストします。 異なる結果が返される場合は、両方のエンジンとの互換性が実現されるように正規表現を書き直します。 Outlook on Windows (クラシック) と Outlook on Mac で評価結果を確認するには、一致しようとしているテキストのサンプルに正規表現を適用する小さな C++ プログラムを記述します。 Visual Studio で実行すると、C++ テスト プログラムは標準テンプレート ライブラリを使用し、同じ正規表現を実行するときに Outlook on Windows (クラシック) または Outlook on Mac の動作をシミュレートします。 Outlook on the web、モバイル デバイス、および新しい Outlook on Windows で評価結果を確認するには、お気に入りの JavaScript 正規表現テスターを使用します。

ItemHasRegularExpressionMatch アクティブ化ルールを使用する場合は、PropertyName 属性の値が、選択されているアイテムの予期する値かどうかを確認します。 対応するプロパティをデバッグするためのヒントを次に示します。

  • 選択されているアイテムがメッセージであり、PropertyName 属性に BodyAsHTML を指定する場合は、メッセージを開いて [ソースの表示] を選択し、そのアイテムの HTML 表現でのメッセージ本文を確認します。

  • 選択したアイテムが予定の場合、またはアクティブ化ルールで PropertyNameBodyAsPlaintext が指定されている場合は、従来の Outlook on Windows で Outlook オブジェクト モデルと Visual Basic エディターを使用できます。

    1. マクロが有効になっており、Outlook のリボンに [ 開発者 ] タブが表示されていることを確認します。

    2. Visual Basic エディターで、[表示][イミディエイト ウィンドウ] を選択します。

    3. シナリオに応じて各種のプロパティを表示するには、次のように入力します。

      • Outlook エクスプローラーで選択されているメッセージ アイテムまたは予定アイテムの HTML 形式の本文。
      ?ActiveExplorer.Selection.Item(1).HTMLBody
      
      • Outlook エクスプローラーで選択されているメッセージ アイテムまたは予定アイテムのプレーン テキスト形式の本文。
      ?ActiveExplorer.Selection.Item(1).Body
      
      • 現在の Outlook インスペクターで開かれているメッセージ アイテムまたは予定アイテムの HTML 形式の本文。
      ?ActiveInspector.CurrentItem.HTMLBody
      
      • 現在の Outlook インスペクターで開かれているメッセージ アイテムまたは予定アイテムのプレーン テキスト形式の本文。
      ?ActiveInspector.CurrentItem.Body
      

ItemHasRegularExpressionMatch アクティブ化ルールで Subject または SenderSMTPAddress が指定されている場合、または ItemIs または ItemHasAttachment 規則を使用していて、MAPI に慣れている場合や使用する場合は、MFCMAPI を使用します。 次の表で、ルールが依存している MAPI プロパティを確認します。

ルールの種類 確認する MAPI プロパティ
ItemHasRegularExpressionMatch ルールと Subject PidTagSubject
ItemHasRegularExpressionMatch ルールと SenderSMTPAddress PidTagSenderSmtpAddressPidTagSentRepresentingSmtpAddress
ItemIs PidTagMessageClass
ItemHasAttachment PidTagHasAttachments

プロパティ値を確認した後、正規表現評価ツールを使用して、正規表現がその値の中で一致を見つけるかどうかをテストできます。

Outlook では、すべての正規表現が、期待どおりにアイテム本文の部分に適用されますか?

このセクションは、正規表現を使用するすべてのアクティブ化ルール 、特に項目本文に適用されるアクティブ化ルールに適用されます。これはサイズが大きく、一致の評価に時間がかかる場合があります。 アクティブ化ルールが依存するアイテム プロパティに想定される値が含まれている場合でも、Outlook では item プロパティの値全体に対するすべての正規表現を評価できない可能性があることに注意してください。 適切なパフォーマンスを提供し、読み取りアドインによる過剰なリソース使用量を制御するために、Outlook では、アクティブ化ルールでの実行時の正規表現の処理に関する次の制限を確認します。

  • 評価された項目本文のサイズ。 Outlook が正規表現を評価するアイテム本文の部分には制限があります。 これらの制限は、アイテム本文の Outlook クライアント、フォーム ファクター、および形式によって異なります。 詳細については、「 評価される項目本文のサイズの制限」を参照してください。

  • 正規表現の一致の数。 Outlook on the web、Windows (新規およびクラシック)、Mac、モバイル デバイスでは、それぞれ最大 50 個の正規表現の一致が返されます。 これらの一致は一意であり、重複する一致はこの制限に対してカウントされません。 返された一致の順序を想定しないでください。また、Outlook on Windows (クラシック) と Outlook on Mac の順序が、Outlook on the web、モバイル デバイス、および新しい Outlook on Windows の順序と同じであるとは想定しないでください。 アクティブ化ルールで正規表現の一致が大量に返されることが考えられるときに、返されていない一致がある場合、この制限を超えている可能性があります。

  • 正規表現の一致の長さ。 正規表現の長さは、Outlook アプリケーションが返す長さに制限があります。 Outlook には制限を超えて一致するものは含まれていないので、警告メッセージは表示されません。 他の regex 評価ツールまたはスタンドアロンの C++ テスト プログラムで正規表現を実行して、このような制限を超える一致があるかどうかを確認できます。 次の表は、制限をまとめたものです。 詳細については、「 コンテキスト Outlook アドインのアクティブ化ルールの制限」を参照してください。

    正規表現の長さ制限 Outlook on the web、新しい Windows クライアント、モバイル デバイス上 Outlook on Windows (クラシック) と Mac
    アイテムの本文がテキスト形式の場合 3 KB 1.5 KB
    アイテムの本文が HTML の場合 3 KB 3 KB
  • Outlook on Windows (クラシック) と Outlook on Mac での読み取りアドインのすべての正規表現の評価に費やされた時間。 既定では、読み取りアドインごとに、Outlook はアクティブ化ルールのすべての正規表現の評価を 1 秒以内に完了する必要があります。 それ以外の場合、Outlook は最大 3 回再試行し、Outlook が評価を完了できない場合はアドインを使用できなくなります。 Outlook は、アドインが使用できないことを示すメッセージを通知バーに表示します。 正規表現に使用可能な時間の長さは、グループ ポリシーまたはレジストリ キーの設定で変更できます。

    注:

    Outlook on Windows (クラシック) または Outlook on Mac で読み取りアドインが使用できなくなった場合、読み取りアドインは、Outlook on the web、モバイル デバイス、および新しい Outlook on Windows の同じメールボックスで使用できなくなります。

関連項目