開発者は、カスタム関数を使用して関数をアドインの一部として JavaScript で定義することによって、Excel に新しい関数を追加できます。 ユーザーは Excel 内から、SUM() などの Excel のあらゆるネイティブ関数の場合と同じようにカスタム関数にアクセスできます。
注:
カスタム関数は 、 ユーザー定義関数と交換可能な一般的な用語です。 この両方の用語は、VBA、COM、および Office.js アドインに適用されます。Office アドインのドキュメントでは、Office JavaScript API を使用するカスタム関数を参照するときにカスタム 関数 という用語を使用します。
次のアニメーション画像は、JavaScript または Typescript で作成した関数を呼び出すブックを示しています。 この例では、カスタム関数 =MYFUNCTION.SPHEREVOLUME は球の体積を計算します。
=MYFUNCTION.SPHEREVOLUME カスタム関数は次のコードにより定義されます。
/**
* Returns the volume of a sphere.
* @customfunction
* @param {number} radius
*/
function sphereVolume(radius) {
return Math.pow(radius, 3) * 4 * Math.PI / 3;
}
コードでカスタム関数を定義する方法
Office アドイン用の Yeoman ジェネレーターを使用して Excel のカスタム関数アドイン プロジェクトを作成する場合、使用する関数および作業ウィンドウを制御するファイルが作成されます。 このため、カスタム関数に重要なファイルに注意を集中できます。
| ファイル | ファイル形式 | 説明 |
|---|---|---|
|
./src/functions/functions.js または ./src/functions/functions.ts |
JavaScript または TypeScript |
カスタム関数を定義するコードが含みます。 |
| ./src/functions/functions.html | HTML | カスタム関数を定義する JavaScript ファイルに <script> 参照を提供します。 |
| ./manifest.xml または ./manifest.json | XML または JSON | カスタム関数 JavaScript、JSON、HTML ファイルなど、カスタム関数が使用する複数のファイルの場所を指定します。 また、作業ウィンドウ ファイルおよびコマンド ファイルの場所を表示すると共に、カスタム関数が使用するランタイムも指定します。 Office アドイン用のヨーマン ジェネレーターは、XML マニフェストを使用してプロジェクトを作成します。 |
ヒント
Office アドイン用の Yeoman ジェネレーターには、複数の Excel カスタム関数 プロジェクトが用意されています。 プロジェクトの種類として、 共有ランタイムを使用する Excel カスタム関数 、スクリプトの種類として JavaScript を選択することをお勧めします。
スクリプト ファイル
スクリプト ファイル (./src/customfunctions.js または /src/customfunctions.ts) には、カスタム関数を定義するコードと関数を定義するコメントが含まれています。
add カスタム関数は次のコードにより定義されます。 コード コメントは、Excel にカスタム関数を記述する JSON メタデータ ファイルを生成するために使用されます。 必須の @customfunction コメントが最初に宣言されて、これがカスタム関数であることを示します。 次に、description プロパティに続いて、first および second の 2 つのパラメーターが宣言されます。 最後に returns の説明が記述されます。 カスタム関数で必要になるコメントに関する詳細については、「カスタム関数の JSON メタデータを自動作成する」を参照してください。
/**
* Adds two numbers.
* @customfunction
* @param first First number.
* @param second Second number.
* @returns The sum of the two numbers.
*/
function add(first, second){
return first + second;
}
ヒント
Excel on the web では、カスタム関数の説明とパラメーターの説明がインラインで表示されます。 これにより、カスタム関数を記述するときに、ユーザーに追加情報が提供されます。 Excel on the web のカスタム関数 Script Lab サンプルを調べて、インライン説明を構成する方法について説明します。 例については、次のスクリーンショットを参照してください。
マニフェスト ファイル
カスタム関数を定義するアドインのマニフェスト ファイルは、名前空間を構成し、ファイルの場所を指定し、ランタイムを定義します。 使用しているマニフェストの種類のタブを選択します。
カスタム 関数には、ドキュメントの読み取り/書き込みアクセス許可が必要です。 アドインのみのマニフェストで Microsoft 365 または ReadWriteDocument の統合マニフェストで Document.ReadWrite.User を指定します。 読み取り専用のアクセス許可を使用すると、関数が #BUSY! エラーを返す可能性があります。
カスタム関数 (プロジェクト内の ./manifest.json ) を定義するアドインの統合マニフェストでは、いくつかの処理が行われます。
-
customFunctions.namespaceオブジェクトを使用してカスタム関数の名前空間を定義します。 ユーザーがアドインの一部として関数を特定するのに役立つように、名前空間がカスタム関数の前に付加されます。 -
customFunctions拡張機能を使用して、metadataUrlプロパティを介した JSON メタデータ ファイルの場所など、カスタム関数に関するメタデータを指定します。 -
actions.typeプロパティを"executeFunction"に設定したruntimes配列を使用して、カスタム関数のランタイムを構成します。
サンプル アドインから完全な動作するマニフェストを確認するには、 Office アドイン サンプルの GitHub リポジトリのいずれかでマニフェストを参照してください。
ヒント
複数の環境 (開発、ステージング、デモなど) でアドインをテストする場合は、環境ごとに異なるマニフェスト ファイルを保持することをお勧めします。 各マニフェスト ファイルでは、次のことができます。
環境に対応する URL を指定します。
エンド ユーザーがサイドロードされたアドインの対応する環境を識別できるように、メタデータ値をカスタマイズします。 例:
- Microsoft 365 の統合マニフェストでは、アドインの
"name"プロパティとさまざまな UI コントロールの"label"プロパティをカスタマイズして環境を示します。 - アドインのみのマニフェストでは、
Resources要素内のDisplayName要素とラベルをカスタマイズして環境を示します。
- Microsoft 365 の統合マニフェストでは、アドインの
アドインでカスタム関数が定義されている場合は、カスタム関数
namespaceをカスタマイズして環境を示します。
このガイダンスに従うことで、テスト プロセスを効率化し、アドインが複数の環境で同時にサイドロードされるときに発生する問題を回避します。
共同編集
Excel on the web および Microsoft 365 サブスクリプションに接続されている Windows 版の Excel では、エンド ユーザーは Excel で共同編集を行うことができます。 エンド ユーザーのブックでカスタム関数を使用している場合、そのエンド ユーザーの共同編集の仕事仲間は、対応するカスタム関数のアドインを読み込むように求められます。 両方のユーザーがアドインを読み込むと、共同編集によりカスタム関数は結果を共有します。
共同編集の詳細については、「Excel での共同編集」を参照してください。
サポートされるプラットフォーム
Excel カスタム関数は、ほとんどの Office クライアント アプリケーションでサポートされています。 Excel カスタム関数は現在、iPad 上の Office、または Windows 上の Office 2021 以前のボリューム ライセンスの永続的なバージョンではサポートされていません。 詳細については、 カスタム関数の要件セットを参照してください。
次の手順
カスタム関数を試してみましょう。 もしまだであれば、簡単なカスタム関数クイックスタートまたは、詳細なカスタム関数のチュートリアルをご覧ください。
独自のカスタム関数を試すもう 1 つの簡単な方法はスクリプト ラボを使用し、アドインで Excel のカスタム関数を試してみることができます。 独自のカスタム関数を作成したり、提供されたサンプルを再生してみることができます。
関連項目
Office Add-ins