アプリケーション固有の JavaScript API でのエラー処理

アプリケーション固有の Office JavaScript API を使用してアドインをビルドする場合は、実行時エラーを考慮するエラー処理ロジックを必ず含めます。 API の非同期的な性質上、これを行うことは重要です。

ベスト プラクティス

コード サンプルScript Lab スニペットでは、または Word.run のすべてのExcel.runPowerPoint.run呼び出しに、エラーをキャッチするためのステートメントが付属catchしていることがわかります。 アプリケーション固有の API を使用してアドインをビルドする場合は、同じパターンを使用することをお勧めします。

$("#run").on("click", () => tryCatch(run));

async function run() {
  await Excel.run(async (context) => {
      // Add your Excel JavaScript API calls here.

      // Await the completion of context.sync() before continuing.
    await context.sync();
    console.log("Finished!");
  });
}

/** Default helper for invoking an action and handling errors. */
async function tryCatch(callback) {
  try {
    await callback();
  } catch (error) {
    // Note: In a production add-in, you'd want to notify the user through your add-in's UI.
    console.error(error);
  }
}

API エラー

Office JavaScript API 要求が正常に実行されない場合、API は次のプロパティを含むエラー オブジェクトを返します。

  • code: エラー メッセージの プロパティにはcode{application}OfficeExtension.ErrorCodes Excel、PowerPoint、または{application}.ErrorCodesWordを表す文字列が含まれています。 たとえば、エラー コード "InvalidReference" は、参照が指定された操作に対して有効でないことを示します。 エラー コードはローカライズされません。

  • message: エラー メッセージの message プロパティには、ローカライズされた文字列のエラーの概要が含まれています。 エラー メッセージは、エンド ユーザーによる使用を目的としていません。エラー コードと適切なビジネス ロジックを使用して、アドインがエンド ユーザーに表示するエラー メッセージを特定する必要があります。

  • debugInfo:存在する場合、エラー メッセージの debugInfo プロパティは、エラーの根本原因を理解するために使用できる追加情報を提供します。

注:

を使用 console.log() してコンソールにエラー メッセージを出力する場合、それらのメッセージはサーバーでのみ表示されます。 エンド ユーザーは、アドイン作業ウィンドウや Office アプリケーション内のどこにもこれらのエラー メッセージを表示しません。 ユーザーにエラーを報告するには、「 エラー通知」を参照してください。

エラー コードとメッセージ

次の表に、アプリケーション固有の API から返される可能性があるエラーを示します。

注:

次の表に、アプリケーション固有の API の使用中に発生する可能性があるエラー メッセージを示します。 Common API を使用している場合は、「 Office Common API エラー コード 」を参照して、関連するエラー メッセージについて説明します。

エラー コード エラー メッセージ Notes (メモ)
AccessDenied 要求された操作を実行できません。 なし。
ActivityLimitReached アクティビティの制限に達しました。 なし。
ApiNotAvailable 要求された API は使用できません。 なし。
ApiNotFound 使用しようとしている API が見つかりませんでした。 新しいバージョンの Office アプリケーションで使用できる場合があります。 詳細については、「 Office アドインの Office クライアント アプリケーションとプラットフォームの可用性 」を参照してください。 なし。
BadPassword 指定したパスワードが正しくありません。 なし。
Conflict 競合のため、要求を処理できませんでした。 なし。
ContentLengthRequired Content-length HTTP ヘッダーがありません。 なし。
GeneralException 要求の処理中に内部エラーが発生しました。 なし。
HostRestartNeeded Office アプリケーションを再起動する必要があります。 このエラーは、Office アプリケーションの起動後にメソッドを呼び出すアドインが更新された場合、 Office.ribbon.requestUpdate() メソッドによってスローされます。
InsertDeleteConflict 試行された挿入操作または削除操作で競合が発生しました。 なし。
InvalidArgument 引数が無効であるか、存在しません。または形式が正しくありません。 なし。
InvalidBinding このオブジェクトのバインドは、以前の更新プログラムが原因で無効になっています。 なし。
InvalidOperation 試行された操作は、このオブジェクトでは無効です。 なし。
InvalidReference この参照は、現在の操作に対して無効です。 なし。
InvalidRequest 要求を処理できません。 なし。
InvalidRibbonDefinition Office に無効なリボン定義が与えられました。 無効な RibbonUpdateObject が Office.ribbon.requestUpdate() メソッドに渡されると、このエラーがスローされます。
InvalidSelection 現在の選択内容は、この操作では無効です。 なし。
ItemAlreadyExists 作成中のリソースはすでに存在しています。 なし。
ItemNotFound 要求されたリソースは存在しません。 なし。
MemoryLimitReached メモリ制限に達しました。 アクションを完了できませんでした。 なし。
NotImplemented 要求された機能は実装されていません。 これは、API がプレビュー中であるか、特定のプラットフォーム (オンラインのみなど) でのみサポートされていることを意味する可能性があります。 詳細については、「 Office アドインの Office クライアント アプリケーションとプラットフォームの可用性 」を参照してください。
RequestAborted 実行時に要求が中止されました。 なし。
RequestPayloadSizeLimitExceeded 要求ペイロード のサイズが制限を超えています。 詳細については、 Office アドインのリソース制限とパフォーマンスの最適化に関する 記事を参照してください。 このエラーは、Office on the webでのみ発生します。
ResponsePayloadSizeLimitExceeded 応答ペイロードのサイズが制限を超えています。 詳細については、 Office アドインのリソース制限とパフォーマンスの最適化に関する 記事を参照してください。 このエラーは、Office on the webでのみ発生します。
ServiceNotAvailable サービスを利用できません。 なし。
Unauthenticated 必要な認証情報が見つからないか、無効です。 なし。
UnsupportedFeature ソース ワークシートにサポートされていない機能が 1 つ以上含まれているため、操作が失敗しました。 なし。
UnsupportedOperation 試行中の操作はサポートされていません。 なし。

Excel 固有のエラー コードとメッセージ

エラー コード エラー メッセージ Notes (メモ)
EmptyChartSeries グラフ系列が空であるため、試行された操作は失敗しました。 なし。
FilteredRangeConflict 操作が試行されると、フィルター処理された範囲との競合が発生します。 なし。
FormulaLengthExceedsLimit 適用された数式のバイトコードが最大長制限を超えています。 32 ビット コンピューターの Office の場合、バイトコードの長さの制限は 16384 文字です。 64 ビット コンピューターでは、バイトコードの長さの制限は 32768 文字です。 このエラーは、Excel on the webとデスクトップの両方で発生します。
GeneralException 各種。 データ型 API は、動的エラー メッセージを含むエラーを返 GeneralException します。 これらのメッセージは、エラーの原因であるセルと、エラーの原因となっている問題を参照します。たとえば、"セル A1 に必要なプロパティ typeがありません。
InactiveWorkbook 複数のブックが開き、この API によって呼び出されているブックのフォーカスが失われたため、操作が失敗しました。 なし。
InvalidOperationInCellEditMode Excel が [編集] セル モードの場合、操作は使用できません。 Enter キーまたは Tab キーを使用するか、別のセルを選択して編集モードを終了してから、もう一度やり直してください。 なし。
MergedRangeConflict 操作を完了できません。 テーブルは、別のテーブル、ピボットテーブル レポート、クエリ結果、マージされたセル、または XML マップと重複できません。 なし。
NonBlankCellOffSheet Microsoft Excel では、ワークシートの末尾から空でないセルをプッシュするため、新しいセルを挿入できません。 これらの空でないセルは空で表示されますが、空白の値、書式、または数式が含まれる場合があります。 挿入する対象の領域を作るために十分な行または列を削除してから、もう一度やり直してください。 なし。
OperationCellsExceedLimit 試行された操作は、33554000 セルの制限を超える値に影響します。 このエラーがトリガーされた TableColumnCollection.add API 場合は、ワークシート内に意図しないデータがなく、テーブルの外部にないことを確認します。 特に、ワークシートの右端の列にあるデータのチェック。 意図しないデータを削除して、このエラーを解決します。 操作で処理されるセルの数を確認する 1 つの方法は、次の計算を実行することです。 (number of table rows) x (16383 - (number of table columns)) 数値 16383 は、Excel でサポートされる列の最大数です。

このエラーは、Excel on the webでのみ発生します。
PivotTableRangeConflict 操作が試行されると、ピボットテーブル範囲との競合が発生します。 なし。
RangeExceedsLimit 範囲内のセル数が、サポートされている最大数を超えています。 詳細については、 Office アドインのリソース制限とパフォーマンスの最適化に関する 記事を参照してください。 なし。
RefreshWorkbookLinksBlocked ユーザーに外部ブック リンクを更新するアクセス許可が付与されていないため、操作が失敗しました。 なし。
UnsupportedSheet このシートの種類では、マクロ シートまたはグラフ シートであるため、この操作はサポートされていません。 なし。

Word固有のエラー コードとメッセージ

エラー コード エラー メッセージ Notes (メモ)
SearchDialogIsOpen 検索ダイアログが開いています。 なし。
SearchStringInvalidOrTooLong 検索文字列が無効であるか、長すぎます。 検索文字列の最大値は 255 文字です。

エラー通知

ユーザーにエラーを報告する方法は、使用している UI システムによって異なります。

  • ui システムとしてReactを使用している場合は、Fluent UI コンポーネントとデザイン要素を使用します。 ダイアログ コンポーネントを使用してエラー メッセージを伝達することをお勧めします。 エラーがユーザーの入力内にある場合は、エラーを太字の赤いテキストとして表示するように Input コンポーネントを構成します。

    注:

    アラート コンポーネントを使用してユーザーにエラーを報告することもできますが、現在プレビュー段階であり、運用環境のアドインでは使用しないでください。 リリースの状態については、「Fluent UI React v9 コンポーネント ロードマップ」を参照してください。

  • UI にReactを使用していない場合は、HTML と JavaScript で直接実装されている古い Fabric UI コンポーネントの使用を検討してください。 テンプレートの例としては、 Office-Add-in-UX-Design-Patterns-Code リポジトリがあります。 ダイアログとナビゲーション のサブフォルダーを特に見てみましょう。 Excel-Add-in-SalesLeads のサンプルでは、メッセージ バナーを使用します。

関連項目