カスタム関数から Excel JavaScript API を呼び出す

カスタム関数から Excel JavaScript API を呼び出して、範囲データを取得し、計算のためのより多くのコンテキストを取得します。 カスタム関数を使用して Excel JavaScript API を呼び出すと、次の場合に役立ちます。

  • カスタム関数は、計算前に Excel から情報を取得する必要があります。 この情報には、ドキュメント プロパティ、範囲形式、カスタム XML パーツ、ブック名、またはその他の Excel 固有の情報が含まれる場合があります。
  • カスタム関数は、計算後に戻り値のセルの数値形式を設定します。

重要

カスタム関数から Excel JavaScript API を呼び出すには、 共有ランタイムを使用する必要があります。 Office アドイン用 Yeoman ジェネレーターを使用して、共有ランタイム プロジェクトを使用して Excel カスタム関数をインストールするか、「共有ランタイムを使用するように Office アドインを構成する」を参照してください。

コード サンプル

カスタム関数から Excel JavaScript API を呼び出すには、まずコンテキストが必要です。 Excel.RequestContext オブジェクトを使用してコンテキストを取得します。 次に、コンテキストを使用して、ブックで必要な API を呼び出します。

次のコード サンプルは、 を使用 Excel.RequestContext してブック内のセルから値を取得する方法を示しています。 このサンプルでは、 address パラメーターは Excel JavaScript API Worksheet.getRange メソッドに渡され、文字列として入力する必要があります。 たとえば、Excel UI に入力されたカスタム関数は、 パターン =CONTOSO.GETRANGEVALUE("A1")に従う必要があります。ここで "A1" 、 は値を取得するセルのアドレスです。

/**
 * @customfunction
 * @param {string} address The address of the cell from which to retrieve the value.
 * @returns The value of the cell at the input address.
 **/
async function getRangeValue(address) {
 // Retrieve the context object. 
 const context = new Excel.RequestContext();
 
 // Use the context object to access the cell at the input address. 
 const range = context.workbook.worksheets.getActiveWorksheet().getRange(address);
 range.load("values");
 await context.sync();
 
 // Return the value of the cell at the input address.
 return range.values[0][0];
}

カスタム関数を使用して Excel JavaScript API を呼び出すことの制限事項

カスタム関数アドインは Excel JavaScript API を呼び出すことができますが、呼び出す API には注意する必要があります。 カスタム関数を実行しているセルの外部でセルを変更するカスタム関数から Excel JavaScript API を呼び出さないでください。 他のセルまたは Excel 環境を変更すると、Excel アプリケーションのパフォーマンス、タイムアウト、無限ループが低下する可能性があります。 つまり、カスタム関数は次のいずれかを実行しないでください。

  • スプレッドシートにセルを挿入、削除、書式設定します。
  • 別のセルの値を変更します。
  • ブックにシートを移動、名前変更、削除、または追加します。
  • ブックに名前を追加します。
  • プロパティを設定します。
  • 計算モードや画面ビューなど、Excel 環境オプションのいずれかを変更します。

カスタム関数アドインは、カスタム関数を実行しているセルの外部にあるセルから情報を読み取ることができますが、他のセルへの書き込み操作は実行しないでください。 代わりに、リボン ボタンまたは作業ウィンドウのコンテキストから、他のセルまたは Excel 環境に変更を加えます。 さらに、このシナリオでは予測できない結果が生成されるため、Excel 再計算の実行中にカスタム関数の計算を実行しないでください。

次の手順

関連項目