Excel データ型を使用すると、カスタム関数は文字列、数値、ブール値、エラー以外の値を受け入れて返します。 たとえば、カスタム関数は、書式設定された数値を返したり、エンティティ値を引数として受け入れたりできます。
カスタム関数と Excel JavaScript API では、データ型に同じ JSON スキーマが使用されます。 有効にすると、カスタム関数が値を計算して評価するにつれて、そのスキーマが維持されます。
データ型を使用してカスタム関数を試す
Script Labを Excel にインストールし、サンプル ライブラリからデータ型: カスタム関数のサンプルを実行します。
カスタム関数がデータ型を処理する方法
カスタム関数は、データ型をパラメーターとして受け入れ、戻り値としてデータ型を作成できます。 使用可能な型の概要については、「 Excel アドインのデータ型の概要」を参照してください。
注:
カスタム関数は、データ型によって提供される拡張エラー オブジェクトの完全な機能をサポートしていません。 カスタム関数は、データ型のエラー オブジェクトを受け入れることはできますが、計算全体でエラーは維持されません。 現時点では、カスタム関数は CustomFunctions.Error オブジェクトに含まれるエラーのみをサポートしています。
カスタム関数のデータ型を有効にする
カスタム関数プロジェクトには JSON メタデータ ファイルが含まれています。これは、データ型 API で使用される JSON スキーマとは異なります。 カスタム関数のデータ型を有効にするには、カスタム関数メタデータ ファイルに allowCustomDataForDataTypeAny プロパティを手動で追加し、 trueに設定します。
"allowCustomDataForDataTypeAny": true
手動の JSON メタデータ作成プロセスの詳細については、「 カスタム関数の JSON メタデータを手動で作成する」を参照してください。 このプロパティの追加の詳細については、allowCustomDataForDataTypeAny を参照してください。
書式設定された数値を出力する
次のカスタム関数は、数値と数値の形式を受け取り、書式設定された DoubleCellValue オブジェクトを 返します。
/**
* Take a number as the input value and return a double as the output.
* @customfunction
* @param {number} value
* @param {string} format (e.g. "0.00%")
* @returns A formatted number value.
*/
function createFormattedNumber(value, format) {
return {
type: "Double",
basicValue: value,
numberFormat: format
};
}
エンティティ値の入力
次のカスタム関数は 、EntityCellValue オブジェクトと属性名を受け入れます。
attributeがtextされると、エンティティの text プロパティが返されます。 それ以外の場合は、要求されたプロパティの basicValue を返します。
重要
カスタム関数で EntityCellValue を構築または返し、その値に入れ子になったエンティティが含まれている場合は、ルート レベルのエンティティで referencedValues 配列のみを定義します。 入れ子になったエンティティにreferencedValuesを定義すると、Excel は javaScript 例外や詳細な診断なしで #VALUE! エラーを返します。 入れ子になったエンティティの ReferenceCellValue インデックスを使用して、代わりにルート エンティティの referencedValues 配列を指します。 詳細については、「 エンティティ値」を参照してください。
/**
* Accept an entity value data type as a function input.
* @customfunction
* @param {Excel.EntityCellValue} value
* @param {string} attribute
* @returns {any} The text value of the entity.
*/
function getEntityAttribute(value, attribute) {
if (value.type === "Entity") {
if (attribute === "text") {
return value.text;
} else {
return value.properties[attribute].basicValue;
}
} else {
return JSON.stringify(value);
}
}
関連項目
Office Add-ins