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

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

重要

エンティティベースのコンテキスト Outlook アドインは、2024 年第 2 四半期に廃止される予定です。 この機能を廃止する作業は 5 月に開始され、6 月末まで継続されます。 6 月以降、コンテキスト アドインはメール アイテム内のエンティティを検出してタスクを実行できなくなります。 次の API も廃止されます。

中断の可能性を最小限に抑えるために、エンティティ ベースのコンテキスト アドインが廃止された後も、次の機能がサポートされます。

  • オンライン会議アドインによってアクティブ化される [会議に参加 ] ボタンの代替実装が開発されています。 エンティティベースのコンテキスト アドインのサポートが終了すると、オンライン会議アドインは自動的に別の実装に移行して [ 会議に参加 ] ボタンをアクティブ化します。
  • エンティティ ベースのコンテキスト アドインが廃止された後も、正規表現ルールは引き続きサポートされます。 代替ソリューションとして正規表現ルールを使用するように、コンテキスト アドインを更新することをお勧めします。 これらのルールを実装する方法のガイダンスについては、「 正規表現アクティブ化ルールを使用して Outlook アドインを表示する」を参照してください。

詳細については、「 エンティティ ベースのコンテキスト Outlook アドインの廃止」を参照してください。

ユーザーのメールボックスが、Exchange 2013 以降のバージョンの Exchange Server 上にあるか?

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

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

  • 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
      

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

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

注:

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

インストールされているアドインの一覧を確認して、アドインが使用可能かどうかを確認します。

テストするアイテムが Outlook アドインをサポートしているか? 選択されたアイテムが Exchange 2013 以降のバージョンの Exchange Server で配信されているか?

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

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

メール アイテムが上記の種類の 1 つでなくても、アイテムが Exchange 2013 以上のバージョンのExchange Serverによって配信されなかった場合、送信者の SMTP アドレスなどの既知のエンティティとプロパティはアイテムで識別されません。 これらのエンティティまたはプロパティに依存するアクティブ化ルールは満足せず、アドインはアクティブ化されません。

アドイン マニフェストが適切にインストールされているか? また 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 にあります。

重要

Windows 上の Outlook 2013 の場合は、16.0 ではなく 15.0 を使用して、場所が次のようになります。

%LocalAppData%\Microsoft\Office\15.0\WEF

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

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

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

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

  1. Outlook を開いている間にマニフェストを変更し、アドインの開発に Visual Studio 2012 や 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 ルールのみを使用して新規作成アドインをアクティブ化できます。また、ItemHasKnownEntityItemHasRegularExpressionMatch ルールなどの他の種類のルールは使用できません。詳細については、「Outlook アドインのアクティブ化ルール」を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

    注:

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

関連項目