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.
Comme décrit dans l’article vue d’ensemble des fonctions personnalisées , un projet de fonctions personnalisées doit inclure à la fois un fichier de métadonnées JSON et un fichier de script (JavaScript ou TypeScript) pour inscrire une fonction, ce qui la rend disponible pour utilisation. Les fonctions personnalisées sont inscrites lorsque l’utilisateur exécute le complément pour la première fois et après, elles sont disponibles pour le même utilisateur dans tous les classeurs.
Importante
Notez que les fonctions personnalisées Excel sont disponibles sur les plateformes suivantes.
- Office sur le web
- Office pour Windows
- Abonnement Microsoft 365
- retail perpetual Office 2016 et versions ultérieures
- Office 2021 perpétuel/LTSC sous licence en volume et versions ultérieures
- Office sur Mac
Les fonctions personnalisées Excel ne sont actuellement pas prises en charge dans les éléments suivants :
- Office sur iPad
- versions perpétuelles sous licence en volume de Office 2021 ou antérieures sur Windows
Remarque
Actuellement, le manifeste unifié pour Microsoft 365 ne prend pas en charge les projets de fonctions personnalisées. Vous devez utiliser le manifeste de complément uniquement pour les projets de fonctions personnalisées. Pour plus d’informations, voir Manifeste des compléments Office.
Nous vous recommandons d’utiliser la génération automatique JSON lorsque cela est possible au lieu de créer votre propre fichier JSON. La génération automatique est moins sujette aux erreurs de l’utilisateur et les yo office fichiers générés automatiquement l’incluent déjà. Pour plus d’informations sur les balises JSDoc et le processus de génération automatique JSON, consultez Générer automatiquement des métadonnées JSON pour les fonctions personnalisées.
Toutefois, vous pouvez créer un projet de fonctions personnalisées à partir de zéro. Ce processus vous oblige à :
- Écrivez votre fichier JSON.
- Vérifiez que votre fichier manifeste est connecté à votre fichier JSON.
- Associez les propriétés et
namelesidfonctions dans le fichier de script afin d’inscrire vos fonctions.
L’image suivante explique les différences entre l’utilisation yo office de fichiers de structure automatique et l’écriture JSON à partir de zéro.
Remarque
N’oubliez pas de connecter votre manifeste au fichier JSON que vous créez, via la <Resources> section de votre fichier manifeste de complément uniquement si vous n’utilisez pas le générateur Yeoman pour les compléments Office.
Création de métadonnées et connexion au manifeste
Créez un fichier JSON dans votre projet et fournissez tous les détails sur vos fonctions, telles que les paramètres de la fonction. Consultez l’exemple de métadonnées suivant et la référence des métadonnées pour obtenir la liste complète des propriétés de fonction.
Vérifiez que votre fichier manifeste de complément uniquement fait référence à votre fichier JSON dans la <Resources> section, comme dans l’exemple suivant.
<Resources>
<bt:Urls>
<bt:Url id="JSON-URL" DefaultValue="https://subdomain.contoso.com/config/customfunctions.json"/>
<bt:Url id="JS-URL" DefaultValue="https://subdomain.contoso.com/dist/win32/ship/index.win32.bundle"/>
<bt:Url id="HTML-URL" DefaultValue="https://subdomain.contoso.com/index.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="namespace" DefaultValue="CONTOSO"/>
</bt:ShortStrings>
</Resources>
Exemple de métadonnées JSON
L’exemple suivant montre le contenu d’un fichier de métadonnées JSON pour un complément qui définit des fonctions personnalisées. Les sections qui suivent cet exemple fournissent des informations détaillées sur les propriétés individuelles au sein de cet exemple JSON.
{
"allowCustomDataForDataTypeAny": true,
"allowErrorForDataTypeAny": true,
"functions": [
{
"id": "ADD",
"name": "ADD",
"description": "Add two numbers",
"helpUrl": "http://www.contoso.com/help",
"result": {
"type": "number",
"dimensionality": "scalar"
},
"parameters": [
{
"name": "first",
"description": "first number to add",
"type": "number",
"dimensionality": "scalar"
},
{
"name": "second",
"description": "second number to add",
"type": "number",
"dimensionality": "scalar"
}
]
},
{
"id": "GETDAY",
"name": "GETDAY",
"description": "Get the day of the week",
"helpUrl": "http://www.contoso.com/help",
"result": {
"dimensionality": "scalar"
},
"parameters": []
},
{
"id": "INCREMENTVALUE",
"name": "INCREMENTVALUE",
"description": "Count up from zero",
"helpUrl": "http://www.contoso.com/help",
"result": {
"dimensionality": "scalar"
},
"parameters": [
{
"name": "increment",
"description": "the number to be added each time",
"type": "number",
"dimensionality": "scalar"
}
],
"options": {
"stream": true,
"cancelable": true
}
},
{
"id": "GETPLANETS",
"name": "GETPLANETS",
"description": "A function that uses the custom enum as a parameter.",
"parameters": [
{
"name": "planetName",
"type": "string",
"customEnumId": "PLANETS"
}
]
}
],
"enums": [
{
"id": "PLANETS",
"type": "string",
"values": [
{
"name": "Mercury",
"stringValue": "mercury",
"tooltip": "Mercury is the first planet from the sun."
},
{
"name": "Venus",
"stringValue": "venus",
"tooltip": "Venus is the second planet from the sun."
}
]
}
]
}
Remarque
Un exemple complet de fichier JSON est disponible dans l’historique de validation du dépôt GitHub OfficeDev/Excel-Custom-Functions . Étant donné que le projet a été ajusté pour générer automatiquement du code JSON, un exemple complet de JSON manuscrit n’est disponible que dans les versions précédentes du projet.
Informations de référence sur les métadonnées
allowCustomDataForDataTypeAny
La allowCustomDataForDataTypeAny propriété est un type de données booléen. La définition de cette valeur sur permet à true une fonction personnalisée d’accepter les types de données comme paramètres et de retourner des valeurs. Pour plus d’informations, consultez Fonctions et types de données personnalisés.
Remarque
Contrairement à la plupart des autres propriétés de métadonnées JSON, allowCustomDataForDataTypeAny est une propriété de niveau supérieur et ne contient aucune sous-propriété. Consultez l’exemple de code de métadonnées JSON précédent pour obtenir un exemple de mise en forme de cette propriété.
Si votre fonction personnalisée utilise le cellValueTypeparamètre , la définition de n’est pas nécessaire pour accepter les allowCustomDataForDataTypeAny types de données comme paramètres et retourner des valeurs.
allowErrorForDataTypeAny
La allowErrorForDataTypeAny propriété est un type de données booléen. La définition de la valeur sur permet à true une fonction personnalisée de traiter les erreurs en tant que valeurs d’entrée. Tous les paramètres avec le type any ou any[][] peuvent accepter des erreurs comme valeurs d’entrée lorsque allowErrorForDataTypeAny est défini sur true. La valeur par défaut allowErrorForDataTypeAny est false.
Remarque
Contrairement aux autres propriétés de métadonnées JSON, allowErrorForDataTypeAny est une propriété de niveau supérieur et ne contient aucune sous-propriété. Consultez l’exemple de code de métadonnées JSON précédent pour obtenir un exemple de mise en forme de cette propriété.
fonctions
La propriété functions est un tableau d’objets de fonction personnalisés. Le tableau suivant répertorie les propriétés de chaque objet.
| Propriété | Type de données | Obligatoire | Description |
|---|---|---|---|
description |
string | Non | Description de la fonction que voient les utilisateurs finaux dans Excel. Par exemple, convertit une valeur Celsius en valeur Fahrenheit. |
helpUrl |
string | Non | URL fournissant des informations sur la fonction Par exemple : http://contoso.com/help/convertcelsiustofahrenheit.html. |
id |
string | Oui | Un ID unique pour la fonction. Cet ID peut contenir uniquement des points et caractères alphanumériques et ne doit pas être modifié une fois défini. |
name |
string | Oui | Nom de la fonction que voient les utilisateurs finaux dans Excel. Dans Excel, ce nom de fonction est précédé de l’espace de noms des fonctions personnalisées spécifié dans le fichier manifeste du complément uniquement. |
options |
objet | Non | Vous permet de personnaliser certains aspects de comment et quand Excel exécute la fonction. Reportez-vous aux options pour plus d’informations. |
parameters |
tableau | Oui | Tableau qui définit les paramètres d’entrée de la fonction. Pour plus d’informations, consultez paramètres. |
result |
objet | Oui | Objet qui définit le type d’informations renvoyées par la fonction. Reportez-vous au résultat pour plus d’informations. |
Enums
La enums propriété est un tableau d’objets enum . Le tableau suivant répertorie les propriétés de chaque objet.
Conseil
Pour en savoir plus sur la création d’énumérations personnalisées pour vos fonctions personnalisées, consultez Créer des énumérations personnalisées pour vos fonctions personnalisées. Pour en savoir plus sur la modification des métadonnées pour les énumérations personnalisées, consultez Modifier les énumérations personnalisées dans les métadonnées JSON.
| Propriété | Type de données | Obligatoire | Description |
|---|---|---|---|
name |
string | Oui | Brève description de la constante. |
tooltip |
string | Non | Informations supplémentaires sur la constante qui peut être affichée sous forme d’info-bulle dans les interfaces utilisateur. |
numberValue |
number | Conditionnelle | Valeur numérique de la constante. Si l’énumération type est number, ce champ est obligatoire. |
stringValue |
string | Conditionnelle | Valeur de chaîne de la constante. Si l’énumération type est string, ce champ est obligatoire. |
options
L’objet options vous permet de personnaliser certains aspects de comment et quand Excel exécute la fonction. Le tableau suivant répertorie les propriétés de l’objet options.
| Propriété | Type de données | Obligatoire | Description |
|---|---|---|---|
cancelable |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, Excel appelle le gestionnaire CancelableInvocation chaque fois que l’utilisateur effectue une action ayant pour effet d’annuler la fonction, par exemple, en déclenchant manuellement un recalcul ou en modifiant une cellule référencée par la fonction. Les fonctions annulables sont généralement utilisées uniquement pour les fonctions asynchrones qui retournent un seul résultat et doivent gérer l’annulation d’une demande de données. Une fonction ne peut pas utiliser les stream propriétés et .cancelable |
capturesCallingObject |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, le type de données référencé par la fonction personnalisée est passé comme premier argument à la fonction personnalisée. Pour plus d’informations, consultez Référencer la valeur d’entité en tant qu’objet appelant. |
excludeFromAutoComplete |
Booléen | Non La valeur par défaut est false. |
Si truela valeur est , la fonction personnalisée n’apparaît pas dans le menu saisie semi-automatique de formule dans Excel. Pour plus d’informations, voir Exclure des fonctions personnalisées de l’interface utilisateur Excel. Une fonction ne peut pas avoir à la fois les excludeFromAutoComplete propriétés et linkedEntityLoadService définies sur true. |
linkedEntityLoadService |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, la fonction personnalisée fournit un service de chargement qui retourne les valeurs de cellule d’entité liée à jour pour tous les ID d’entité liée demandés par Excel. Une fonction ne peut pas avoir à la fois les excludeFromAutoComplete propriétés et linkedEntityLoadService définies sur true. Pour plus d’informations, consultez Fonction de service de chargement d’entité liée. |
requiresAddress |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, votre fonction personnalisée peut accéder à l’adresse de la cellule qui l’a appelée. La address propriété du paramètre d’appel contient l’adresse de la cellule qui a appelé votre fonction personnalisée. Une fonction ne peut pas utiliser les stream propriétés et .requiresAddress |
requiresParameterAddresses |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, votre fonction personnalisée peut accéder aux adresses des paramètres d’entrée de la fonction. Cette propriété doit être utilisée en combinaison avec la dimensionality propriété de l’objet de résultat et dimensionality doit être définie sur matrix. Pour plus d’informations, consultez Détecter l’adresse d’un paramètre . |
requiresStreamAddress |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, la fonction peut accéder à l’adresse de la cellule appelant la fonction de diffusion en continu. La address propriété du paramètre d’appel contient l’adresse de la cellule qui a appelé votre fonction de diffusion en continu. La fonction doit également avoir stream défini sur true. |
requiresStreamParameterAddresses |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, la fonction peut accéder aux adresses de paramètres de la cellule appelant la fonction de diffusion en continu. La parameterAddresses propriété du paramètre d’appel contient les adresses de paramètre de votre fonction de diffusion en continu. La fonction doit également avoir stream défini sur true. |
stream |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, la fonction peut envoyer une sortie à la cellule à plusieurs reprises, même en cas d’appel unique. Cette option est utile pour des sources de données qui changent rapidement, telles que des valeurs boursières. La fonction ne doit pas utiliser d’instruction return. Au lieu de cela, la valeur du résultat est passée en tant qu’argument de la StreamingInvocation.setResult fonction de rappel. Pour plus d’informations, consultez Créer une fonction de diffusion en continu. |
supportSync |
Booléen | Non La valeur par défaut est false. |
Si la valeur est true, la fonction prend en charge les processus synchrones dans Excel. Une fonction ne peut utiliser qu’une des trois propriétés suivantes : stream, supportSync ou volatile. Si supportSync est combiné avec stream ou volatile, supportSync est ignoré. Pour plus d’informations, consultez Fonctions personnalisées synchrones. |
volatile |
Booléen | Non La valeur par défaut est false. |
Si truela valeur est , la fonction recalcule chaque fois qu’Excel recalcule, au lieu de uniquement lorsque les valeurs dépendantes de la formule ont changé. Une fonction volatile ne peut pas utiliser la stream propriété . Si les stream propriétés et volatile sont toutes deux définies sur true, la propriété volatile est ignorée. |
paramètres
La propriété parameters est un tableau d’objets paramètre. Le tableau suivant répertorie les propriétés de chaque objet.
| Propriété | Type de données | Obligatoire | Description |
|---|---|---|---|
description |
string | Non | Description du paramètre. Cela s’affiche dans IntelliSense d’Excel. |
dimensionality |
string | Non | Doit être scalar (une valeur non matricielle) ou matrix (tableau à 2 dimensions). |
name |
string | Oui | Le nom du paramètre. Ce nom s’affiche dans IntelliSense d’Excel. |
type |
string | Non | Type de données du paramètre. Peut être boolean, number, stringou any, ce qui vous permet d’utiliser l’un des trois types précédents. Si cette propriété n’est pas spécifiée, le type de données est anydéfini par défaut sur . |
cellValueType |
string | Non | Sous-champ de la type propriété. Spécifie les types de données Excel acceptés par la fonction personnalisée. Accepte les valeurs cellvaluenon sensibles à la casse , booleancellvalue, entitycellvaluedoublecellvalue, errorcellvalue, linkedentitycellvalue, localimagecellvalue, stringcellvalue, et webimagecellvalue. Le type champ doit avoir la valeur any pour utiliser le cellValueType sous-champ. |
customEnumId |
string | Non | de id l’énumération dans le enums tableau. Cela associe l’énumération personnalisée à la fonction et permet à Excel d’afficher les membres de l’énumération dans le menu saisie semi-automatique de formule. |
optional |
Booléen | Non | Si la valeur est true, le paramètre est facultatif. |
repeating |
Booléen | Non | Si truela valeur est , les paramètres sont renseignés à partir d’un tableau spécifié. Notez que tous les paramètres répétitifs sont considérés comme des paramètres facultatifs par définition. |
Conseil
Consultez l’extrait de code suivant pour obtenir un exemple de mise en forme du paramètre dans les cellValueType métadonnées JSON.
"parameters": [
{
"name": "range",
"description": "the input range",
"type": "any",
"cellValueType": "webimagecellvalue"
}
]
result
L’objet result définit le type des informations renvoyées par la fonction. Le tableau suivant répertorie les propriétés de l’objet result.
| Propriété | Type de données | Obligatoire | Description |
|---|---|---|---|
dimensionality |
string | Non | Doit être scalar (une valeur non matricielle) ou matrix (tableau à 2 dimensions). |
type |
string | Non | Type de données du résultat. Peut être boolean, number, stringou any (ce qui vous permet d’utiliser l’un des trois types précédents). Si cette propriété n’est pas spécifiée, le type de données est anydéfini par défaut sur . |
Associer des noms de fonctions à des métadonnées JSON
Pour qu’une fonction fonctionne correctement, vous devez associer la propriété de id la fonction à l’implémentation JavaScript. Vérifiez qu’il existe une association, sinon la fonction n’est pas inscrite et n’est pas utilisable dans Excel. L’exemple de code suivant montre comment établir l’association à l’aide de la CustomFunctions.associate() fonction . L’exemple définit la fonction personnalisée add et associe à l’objet dans le fichier de métadonnées JSON où la valeur de la propriétéidestAJOUTER.
/**
* Add two numbers
* @customfunction
* @param {number} first First number
* @param {number} second Second number
* @returns {number} The sum of the two numbers.
*/
function add(first, second) {
return first + second;
}
CustomFunctions.associate("ADD", add);
Le code JSON suivant montre les métadonnées JSON associées au code JavaScript de la fonction personnalisée précédente.
{
"functions": [
{
"description": "Add two numbers",
"id": "ADD",
"name": "ADD",
"parameters": [
{
"description": "First number",
"name": "first",
"type": "number"
},
{
"description": "Second number",
"name": "second",
"type": "number"
}
],
"result": {
"type": "number"
}
}
]
}
N’oubliez pas les meilleures pratiques suivantes lors de la création de fonctions personnalisées dans votre fichier JavaScript et spécifiez les informations correspondantes dans le fichier de métadonnées JSON.
Dans le fichier de métadonnées JSON, vérifiez que la valeur de chaque
idpropriété contient uniquement des points et des caractères alphanumériques.Dans le fichier de métadonnées JSON, vérifiez que la valeur de chaque
idpropriété est unique dans l’étendue du fichier. Autrement dit, aucun objet fonction dans le fichier de métadonnées ne doit pas avoir la mêmeidvaleur.Ne modifiez pas la valeur d’une
idpropriété dans le fichier de métadonnées JSON après qu’elle ait été mappée à un nom de fonction JavaScript correspondante. Vous pouvez modifier le nom de fonction que voient les utilisateurs finaux dans Excel en mettant à jour lanamepropriété dans le fichier de métadonnées JSON, mais vous ne devez jamais changer la valeur d’uneidpropriété après qu’elle a été établie.Dans le fichier JavaScript, spécifiez une association de fonction personnalisée à l’aide de
CustomFunctions.associateaprès chaque fonction.
L’exemple suivant montre les métadonnées JSON qui correspondent aux fonctions définies dans l’exemple de code JavaScript précédent. Les id valeurs de propriété et name sont en majuscules, ce qui est une bonne pratique lors de la description de vos fonctions personnalisées. Vous devez uniquement ajouter ce fichier JSON si vous préparez votre propre fichier JSON manuellement et que vous n’utilisez pas la génération automatique. Pour plus d’informations sur la génération automatique, consultez Générer automatiquement des métadonnées JSON pour les fonctions personnalisées.
{
"$schema": "https://developer.microsoft.com/json-schemas/office-js/custom-functions.schema.json",
"functions": [
{
"id": "ADD",
"name": "ADD",
...
},
{
"id": "INCREMENT",
"name": "INCREMENT",
...
}
]
}
Modifier des énumérations personnalisées dans les métadonnées JSON
Créez ou modifiez des métadonnées d’énumération directement avec la enums propriété . Chaque énumération personnalisée doit avoir une valeur d’ID unique et une valeur de type de string ou number. Les énumérations de type mixte ne sont pas prises en charge.
Si vous créez manuellement les métadonnées JSON pour votre énumération personnalisée, vous pouvez associer ces énumérations à des fonctions personnalisées TypeScript ou JavaScript. Pour en savoir plus sur la création d’énumérations personnalisées, consultez Créer des énumérations personnalisées pour vos fonctions personnalisées.
L’extrait de code JSON suivant montre les métadonnées de deux énumérations : un PLANETS enum qui contient les planètes Mercure et Vénus, et un DAYS enum qui inclut les jours lundi et mardi.
"enums": [
{
"id": "PLANETS",
"type": "string",
"values": [
{
"name": "Mercury",
"stringValue": "mercury",
"tooltip": "Mercury is the first planet from the sun."
},
{
"name": "Venus",
"stringValue": "venus",
"tooltip": "Venus is the second planet from the sun."
}
]
},
{
"id": "DAYS",
"type": "number",
"values": [
{
"name": "Monday",
"numberValue": 1,
"tooltip": "Monday is the first working day of a week."
},
{
"name": "Tuesday",
"numberValue": 2,
"tooltip": "Tuesday is the second working day of a week."
}
]
}
]
Chaque constante dans le values tableau de l’énumération est un objet avec les propriétés suivantes.
-
stringValue ou numberValue : valeur de chaîne ou de nombre de la constante. Si le type enum est
number, estnumberValueobligatoire. Si le type enum eststring, eststringValueobligatoire. - name : brève description de la constante.
- info-bulle (facultatif) : informations supplémentaires sur la constante qui peut être affichée sous forme d’info-bulle dans les interfaces utilisateur.
Pour associer l’énumération personnalisée à une fonction, ajoutez la propriété customEnumId à l’objet parameters . La customEnumId valeur doit correspondre au id de l’énumération. Notez que la valeur ne respecte pas la customEnumId casse. L’extrait de code JSON suivant montre un functions objet associé à l’énumération PLANETS .
"functions": [
{
"description": "A function that uses the custom enum as a parameter.",
"id": "GETPLANETS",
"name": "GETPLANETS",
"parameters": [
{
"name": "planetName",
"type": "string",
"customEnumId": "PLANETS"
}
],
"result": {}
}
]
Étapes suivantes
Découvrez les meilleures pratiques pour nommer votre fonction ou découvrez comment localiser votre fonction à l’aide de la méthode JSON manuscrite décrite précédemment.