Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les types de données Excel permettent aux fonctions personnalisées d’accepter et de retourner des valeurs au-delà des chaînes, des nombres, des valeurs booléennes et des erreurs. Par exemple, une fonction personnalisée peut retourner un nombre mis en forme ou accepter une valeur d’entité comme argument.
Les fonctions personnalisées et l’API JavaScript Excel utilisent le même schéma JSON pour les types de données. Une fois activé, Excel conserve ce schéma en tant que fonctions personnalisées calcul et évaluation des valeurs.
Essayer des fonctions personnalisées avec des types de données
Installez Script Lab dans Excel, puis exécutez l’exemple Types de données : Fonctions personnalisées à partir de la bibliothèque Samples.
Comment les fonctions personnalisées gèrent les types de données
Les fonctions personnalisées peuvent accepter les types de données en tant que paramètres et créer des types de données comme valeurs de retour. Pour une présentation des types disponibles, voir Vue d’ensemble des types de données dans les compléments Excel.
Remarque
Les fonctions personnalisées ne prennent pas en charge toutes les fonctionnalités des objets d’erreur améliorés proposés par les types de données. Une fonction personnalisée peut accepter un objet d’erreur de type de données, mais elle ne conserve pas l’erreur tout au long du calcul. Pour l’instant, les fonctions personnalisées ne peuvent que supporter les erreurs incluses dans l’objet CustomFunctions.Error.
Activer les types de données pour les fonctions personnalisées
Les projets de fonctions personnalisées incluent un fichier de métadonnées JSON, qui diffère du schéma JSON utilisé par les API de types de données. Pour activer les types de données pour les fonctions personnalisées, ajoutez manuellement la allowCustomDataForDataTypeAny propriété au fichier de métadonnées des fonctions personnalisées et définissez-la sur true.
"allowCustomDataForDataTypeAny": true
Pour obtenir une description complète du processus manuel de création de métadonnées JSON, consultez Créer manuellement des métadonnées JSON pour les fonctions personnalisées. Pour plus d’informations sur cette propriété, consultezallowCustomDataForDataTypeAny.
Sortie d’un nombre mis en forme
La fonction personnalisée suivante accepte un nombre et un format de nombre, puis retourne un objet DoubleCellValue mis en forme.
/**
* 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
};
}
Saisie d’une valeur d’entité
La fonction personnalisée suivante accepte un objet EntityCellValue et un nom d’attribut. Elle retourne la propriété de l’entité text quand attribute a la valeur text. Sinon, elle retourne le basicValue de la propriété demandée.
Importante
Lors de la construction ou du renvoi d’un EntityCellValue dans une fonction personnalisée et que cette valeur contient des entités imbriquées, définissez uniquement le referencedValues tableau sur l’entité de niveau racine. La définition referencedValues sur une entité imbriquée entraîne le renvoi d’une erreur #VALUE ! par Excel sans exception JavaScript ni diagnostics détaillée. Utilisez des index ReferenceCellValue dans les entités imbriquées pour pointer vers le tableau de l’entité referencedValues racine à la place. Pour plus d’informations, consultez Valeurs d’entité.
/**
* 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);
}
}