Formules

Les formules permettent de créer des formulaires plus intelligents avec ArcGIS Survey123.

Les questions précédentes doivent toujours être indiquées au format ${field_name} dans les formules.

Opérateurs

Les opérateurs suivants sont pris en charge dans Survey123 :

OpérateurDescriptionExemple

.

La réponse actuelle

.=1

+

Addition

${question_one} + 4

-

Soustraction

${question_one} - 4

*

Multiplication

${question_one} * 4

div

Division

${question_one} div 4

=

Égal

${price}=9.80

!=

Différent

${price}!=9.80

<

Inférieur à

${price}<9.80

<=

Inférieur ou égal à

${price}<=9.80

>

Supérieur à

${price}>9.80

>=

Supérieur ou égal à

${price}>=9.80

or

Ou

${price}=9.80 or ${price}=9.70

and

Et

${price}>9.00 and ${price}<9.90

mod

Modulo (reste de la division)

${question_one} mod ${question_two}

Les fonction suivantes sont prises en charge dans Survey123 :

FonctionDescriptionExemple

selected(question, value)

Vérifie que la réponse est sélectionnée. Utilisée pour les questions select_one et select_multiple.

selected(${question_one}, 'a')

count-selected(question)

Renvoie le nombre de réponses sélectionnées aux questions select_one et select_multiple. Renvoie également le nombre de fichiers joints aux questions de type image, audio et file (fichier) avec l’apparence multiligne.

count-selected(${question_one})

string-length(question, expression, or value)

Renvoie la longueur d'une chaîne non vide.

string-length(${question_one})

substr(question, start, end)

Renvoie la sous-chaîne commençant par le début spécifié (start) et s’étend jusqu’au caractère à l’index de fin end -1, où start et end commencent à 0.

substr(${question_one},1 ,2)

not(expression)

Renvoie une valeur false (Faux) si l’expression renvoyait true (Vrai) et renvoie une valeur true (Vrai) si l’expression renvoyait false (Faux).

not(selected(., 'yes'))

if(condition, a, b)

Si la condition évaluée est vraie (true), renvoie a ; sinon, renvoie b.

if(selected(${question_one}, 'yes') and selected(${question_two}, 'yes'), 'yes', 'no')

true()

True

true()

false()

False

false()

uuid()

Renvoie une chaîne UUID aléatoire.

uuid()

random()

Renvoie une valeur aléatoire comprise entre 0 (inclusive) et 1 (exclusive).

random()

today()

Renvoie la date du jour, stockée en interne à midi heure locale. Utilisé dans les questions de date.

today()

now()

Renvoie un horodatage pour cet instant. Utilisé dans les questions date et dateTime. Se comporte comme today() dans les questions date.

now()

once()

Si une question possède déjà une valeur, renvoie la valeur existante. Utile si vous utilisez random() ou uuid() dans une question répétée pour s'assurer que la valeur ne change pas lorsque vous parcourez les enregistrements répétés du formulaire.

once(uuid())

boolean(question, expression, or value)

Renvoie true (vrai) si la valeur indiquée n’est pas nulle.

Il est recommandé d’utiliser à la place la fonction boolean-from-string().

Attention :

Cette fonction renvoie toujours la valeur true (vrai) dans l’application Web Survey123. Pour connaître les alternatives, reportez-vous à la rubrique Valeurs vides.

boolean(${question_one})

number(question, expression, or value)

Convertit en nombre. La conversion varie selon le type de données.

number(${question_one})

int(question, expression, or value)

Convertit en nombre entier. La conversion varie selon le type de données.

int(${question_one})

string(question, expression, or value)

Convertit en chaîne. La conversion varie selon le type de données.

string(${question_one})

date(question, expression, or value)

Convertit un nombre ou une chaîne en objet de date, sans conserver l'heure.

date('2017-05-28T04:39:02+10:00')

date-time(question, expression, or string)

Convertit un nombre ou une chaîne en objet de date.

date-time('2017-05-28T04:39:02+10:00')

decimal-date-time(question, expression, or string)

Convertit un objet de date en nombre date-heure décimal.

decimal-date-time(${date_question})

decimal-time(question, expression, or string)

Convertit un objet de type heure en un nombre représentant une fraction décimale de jour dans le fuseau horaire de l’appareil.

decimal-time(${time_question})

format-date()

Ajuste une valeur de date ou d’heure existante à un format défini.

format-date(${previous_time},'%H:%M')

coalesce(value1, value2)

Renvoie la première valeur non vide. Prend en charge deux valeurs uniquement.

coalesce(${question_one},${question_two})

concat(value1, value2, …)

Renvoie la concaténation des valeurs de chaîne.

concat(${question_one}, ' and ', ${question_two})

max(value1, value2, ...)

Renvoie la valeur maximale dans une plage donnée, ou vers une seule question dans des répétitions.

max(${question_one},${question_two})

min(value1, value2, ...)

Renvoie la valeur minimale dans une plage donnée, ou vers une seule question dans des répétitions.

min(${question_one},${question_two})

sum(repeat)

Renvoie la somme de toutes les réponses à une question donnée dans des répétitions.

sum(${question})

count(repeat)

Renvoie la quantité de réponses à une question donnée dans des répétitions.

count(${question})

pulldata()

Les informations enregistrées sont envoyées dans un fichier CSV externe ou dans les propriétés d’une réponse. Pour plus d’informations, reportez-vous à la rubrique Utiliser du contenu externe.

pulldata('info','email','name', ${previous_question})

version()

Retourne la version de l'enquête définie dans la feuille de calcul des paramètres.

version()

boolean-from-string()

Renvoie true (vrai) si la chaîne indiquée est « true » (vrai) ou « 1 ». Sinon, renvoie false (faux).

boolean-from-string(${question_one})

contains(string, substring)

Renvoie true (vrai) si la chaîne donnée contient la sous-chaîne.

contains(${question_one}, 'red')

starts-with(string, substring)

Renvoie true (vrai) si la chaîne donnée commence par la sous-chaîne.

starts-with(${question_one}, 'The')

ends-with(string, substring)

Renvoie true (vrai) si la chaîne donnée se termine par la sous-chaîne.

ends-with(${question_one}, 'hand.')

selected-at(question, number)

Utilisée pour les questions select_multiple. Renvoie le nom du choix sélectionné pour le nombre donné, en commençant à compter à partir de zéro ; par exemple, « 2 » renvoie le troisième choix sélectionné.

selected-at(${question_one}, 2)

jr:choice-name(choice_name, 'question')

Utilisée pour les questions select_one et select_multiple. Renvoie l’étiquette associée au nom du choix dans la question donnée. Dans le cadre d’une question select_multiple, la fonction selected-at() doit être utilisée pour extraire l’étiquette pour les réponses individuelles en utilisant l’index correspondant au choix retenu. N’oubliez pas que la question doit être définie entre guillemets.

Pour select_one, jr:choice-name(${select_one}, '${select_one}').

Pour select_multiple, jr:choice-name(selected-at(${select_multiple},choice_index), '${select_multiple}').

join(separator, question)

Concatène toutes les réponses à une question donnée en une répétition, chacune séparée par le séparateur donné.

join(',', ${question_in_repeat})

regex()

Applique une expression régulière à la saisie de la question. Pour plus d’informations, reportez-vous à la rubrique Expressions régulières.

regex(., '^\d{5}$')

position(..)

Renvoie l’index de la enregistrement actuel dans une répétition. Si utilisée en dehors d’une répétition, renvoie 1. Pour plus d'informations, reportez-vous à la rubrique Répétitions.

position(..)

indexed-repeat(question, repeat, index number)

Renvoie la valeur d’une question spécifique dans un enregistrement de répétition. Pour plus d'informations, reportez-vous à la rubrique Répétitions.

indexed-repeat(${room_no}, ${floor}, 3)

Contraintes

L’ajout d’une contrainte à une question d’enquête restreint les saisies acceptées pour une réponse. Il peut s’agir d’une plage spécifique de nombres, d’associations de lettres et chiffres ou d’un appariement de motifs général. Dans votre feuille de calcul, l’expression de contrainte est saisie dans le champ de contrainte et du texte informatif est entré dans la colonne constraint_message de la feuille de calcul d’enquête. Dans l’expression de contrainte, la saisie pour la question est toujours représentée par un point final.

Par exemple, la formule suivante permet de restreindre la saisie d’un champ d’entier aux nombres positifs :

.>= 0

Cette formule, lorsqu’elle est appliquée à un champ date, empêche l’utilisateur de saisir une valeur antérieure à la date du jour :

.>= today()

Vous pouvez également utiliser des calculs dans les contraintes. Cette formule effectue un calcul pour que l’utilisateur ne puisse sélectionner que des dates comprises entre la date du jour et 14 jours à partir de la date du jour :

(.>= today()) and (.<=(today() + (1000 * 60 * 60 * 24 * 14)))

Astuce :

Afin d’éviter des erreurs inattendues, si votre formule comprend des valeurs décimales comprises entre -1 et 1, veillez à inclure un zéro de début dans vos valeurs. Sans zéro de début, la valeur décimale peut être prise pour le caractère arithmétique . (ou -.). Par exemple, l’expression suivante échoue :

.> .25 and .< 24.25

L’expression suivante s’exécute comme prévu :

.> 0.25 and .< 24.25

Expressions régulières

Vous pouvez utiliser des expressions régulières de différentes manières pour l’appariement de modèles afin de restreindre les réponses valides selon un format donné ou de s’assurer qu’elles comportent un contenu spécifique. Cet exemple exige que le mot route apparaisse quelque part dans la réponse à la question.

regex(., 'road')

Le point utilisé au début de ces exemples applique l’expression au champ actuel. L’ajout du nom d’un autre champ à la place applique l’expression régulière à ce champ, ce qui est idéal pour les expressions pertinentes. La virgule fait office de séparateur entre la définition de ce champ et l’expression.

Cette expression régulière garantit que la réponse correspond exactement au mot route, sans autres mots avant ou après.

regex(., '^road$')

Les expressions régulières sont idéales pour restreindre la saisie d’une question à un format standard. Cet exemple accepte uniquement la saisie d’un code postal à cinq chiffres des États-Unis.

regex(., '^\d{5}$')

Cet exemple correspond à la réponse au format actuel des plaques d’immatriculation indonésiennes, comme sur la photo suivante :

Plaque d’immatriculation indonésienne standard

regex(., '^[A-Z]{1,2}\d{4}[A-Z]{2,3}$')

Les formats standardisés de façon plus approximative peuvent exiger des expressions régulières complexes. Cette expression régulière utilisée par l’application Web Survey123 nécessite que la saisie d’un champ de chaîne respecte le format d’une adresse électronique :

regex(., '^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$')

Cette modification de l’expression ci-dessus contraint l’entrée à correspondre au format d’une adresse électronique, tout en acceptant les caractères non anglais :

regex(., '^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\u0400-\uffff\-0-9]+\.)+[a-zA-Z\u0400-\uffff]{2,}))$')

Cet exemple, qui utilise également une expression régulière provenant de l’application Web Survey123, force un champ à n’accepter que les réponses correspondant au format d’une adresse Web :

regex(., '^((https?|ftps?)\://|)(((?:(?:[\da-zA-Z](?:[-\da-zA-Z]{0,61}[\da-zA-Z])?)\.)+(?:[a-zA-Z](?:[-\da-zA-Z]{0,61}[\da-zA-Z])?)\.?)|localhost)(\:\d+)?(/(?:[^?#\s/]+/)*(?:[^?#\s/]+(?:\?[^?#\s/]*)?(?:#[A-Za-z][\w.:-]*)?)?)?')

Pour plus d’informations sur les expressions régulières, reportez-vous à la documentation Mozilla Developer Network. Pour consulter la liste de caractères et leurs fonctions dans les expressions régulières, consultez la feuille de calcul Reference (Référence) dans les modèles Survey123 ou reportez-vous à la Référence rapide.

Calculs

Les calculs sont effectués dans la colonne calculation (calcul) pour une question. Les calculs sont souvent associés aux questions de type calcul, mais ils peuvent aussi être appliqués à des questions de type entier, décimale, texte et à choix unique. Le résultat du calcul peut être utilisé pour renseigner des expressions pertinentes ou de contrainte en référence à un nom de champ de la question de calcul.

Le type de question à calcul est caché et ne s’affiche plus sur un formulaire. Ceci signifie qu’il peut aussi contenir des valeurs qui n’ont pas besoin d’être affichées sur le formulaire mais qui sont incluses dans la couche d’entités.

Par exemple, vous pouvez créer une question de type calcul et la nommer calc, puis insérer l’expression suivante dans sa colonne calculation (calcul) :

${question_1} + ${question_2} + ${question_3}

Utilisez le résultat pour définir la pertinence pour la question suivante :

${calc} <= 100

Vous pouvez utiliser des calculs avec les réponses dans les champs date. Ce calcul estime le nombre d’années entre une date saisie et la date du jour, ce qui est idéal pour calculer l’âge d’une personne :

int((today() - ${birth_date}) div (1000 * 24 * 60 * 60 * 365.25))

Parfois, vous seulement besoin d’une valeur ou d’une version tronquée d’une réponse complète. L’opérateur substr renvoie seulement une partie d’une chaîne, définie par les nombres qui le suivent. Le premier caractère détermine le point de départ de la sélection, et la deuxième valeur définit la longueur (si aucune deuxième valeur n’est présente, elle continue jusqu’à la fin de la chaîne). Dans cet exemple, l’opérateur substr supprime tout sauf la chaîne à partir des caractères 10 à 15 :

substr(${previous_question}, 10, 15)

Lorsque le premier nombre est négatif, substr commence à compter à partir de la fin de la chaîne plutôt qu’à partir du début. L’exemple suivant renvoie uniquement les cinq derniers caractères de la réponse :

substr(${previous_question}, -5)

Vous pouvez aussi utiliser la colonne calculation (calcul) pour les fonctions d’agrégation des répétitions. Pour plus d'informations, reportez-vous à la rubrique Répétitions.

Fonctions mathématiques complexes

La colonne calculation (calcul) peut également traiter des opérations mathématiques plus complexes. Cet exemple calcule la surface d’un tracé à partir de son rayon, avec les fonctions pi et racine carrée :

pi() * pow(${plotRadius}, 2)

Le tableau suivant répertorie les autres fonctions mathématiques que vous pouvez utiliser dans Survey123 :

FonctionDescriptionExemple

pi()

Renvoie pi.

pi()

acos(value)

Renvoie l'arc cosinus de la valeur.

acos(${question_one})

asin(value)

Renvoie l'arc sinus de la valeur.

asin(${question_one})

atan(value)

Renvoie l'arc tangente de la valeur.

atan(${question_one})

cos(value)

Renvoie le cosinus de la valeur.

cos(${question_one})

sin(value)

Renvoie le sinus de la valeur.

sin(${question_one})

tan(value)

Renvoie la tangente de la valeur sous forme de degrés d'un angle.

tan(${question_one})

exp(value)

Renvoie l'exposant naturel de la valeur.

exp(${question_one})

exp10(value)

Renvoie 10 à la puissance de la valeur.

exp10(${question_one})

log(value)

Renvoie le logarithme naturel de la valeur.

log(${question_one})

log10(value)

Renvoie le logarithme en base 10 de la valeur.

log10(${question_one})

sqrt(value)

Renvoie la racine carrée de la valeur.

sqrt(${question_one})

atan2(value1, value2)

Renvoie l'arc tangente du quotient des valeurs.

atan2(${question_one},${question_two})

round(value, power)

Renvoie la valeur arrondie.

round(${question_one}, 5)

pow(value, power)

Renvoie la valeur à la puissance spécifiée.

pow(${question_one}, 3)

Adoptez les pratiques conseillées suivantes lorsque vous faites appel à des calculs :

  • Lorsque vous utilisez random(), pensez à ajouter une constante pour éviter d’obtenir un résultat égal à zéro (0), par exemple, random()+0.5. La valeur 0 peut entraîner une réponse vide.
  • Comme avec les contraintes, assurez-vous que toutes les valeurs de décimales entre -1 et 1 de votre formule aient un zéro de début, car le fait d’avoir une valeur décimale de début entraîne des erreurs.
  • Le type de données du résultat d'un calcul dépend du type de données de chaque élément du calcul. Si un calcul est réalisé sur deux entiers, le résultat du calcul est un entier. Si un calcul comprend des données de type chaîne, un opérateur + peut concaténer les valeurs plutôt que de les additionner. Pour éviter des résultats inattendus, utilisez la fonction number() afin de garantir que les valeurs de chaîne dans un calcul sont traitées comme des nombres. Par exemple, l’addition de question1 (de type entier) et de question2 (de type texte) est ${question1} + number(${question2}).
Astuce :

Le type de liaison XLSForm par défaut pour une question de type calcul est string. Pour remplacer cette valeur par défaut, vous pouvez désigner explicitement le type dans votre feuille de calcul. Ajoutez une colonne à votre feuille de calcul appelée bind::type et saisissez le type requis (par exemple, int ou decimal) pour votre question.

Attention :

L’utilisation de fonctions ou d’opérateurs mathématiques pour les questions de type texte renvoie le résultat NaN dans l’application Web Survey123. Pour concaténer les questions de type texte, utilisez la fonction concat() au lieu de l’opérateur +.

Format de date

Vous pouvez utiliser la fonction format-date dans le champ calculation pour définir le format des valeurs de date et d’heure. Cela peut être utile si vous souhaitez afficher des parties de dates pour les utilisateurs ou les conserver en tant que chaînes.

Dans cet exemple, la valeur contenue dans une question d'heure ou dateTime précédente est renvoyée au format 24 heures :

format-date(${previous_time},'%H:%M')

Les qualificateurs pouvant être utilisés dans la fonction format-date sont les suivants :

QualificateurDescription

%Y

Année à 4 chiffres

%y

Année à 2 chiffres

%m

Mois avec ajout de 0

%n

Mois numérique

%b

Nom du mois abrégé

%d

Jour du mois avec ajout de 0

%e

Jour du mois

%H

Heure avec ajout de 0 (format 24 heures)

%h

Heure (format 24 heures)

%M

Minute avec ajout de 0

%S

Seconde avec ajout de 0

%3

Milliseconde avec ajout de 0 (000-999)

%a

Jour en texte court à trois lettres

%W

Numéro de semaine

Remarque :

Le qualificateur %W ne peut pas être utilisé dans une fonction format-date dans laquelle la question de type date fait appel à un calcul. Ce qualificateur fonctionne avec une question de type date dotée d’une valeur par défaut.

Valeurs vides

Lors de l’utilisation de contraintes et de calculs qui font référence à d’autres questions, envisagez ce qui se passe lorsque cette question est vide (c’est-à-dire qu’il n’y a aucune réponse). Les valeurs vides sont représentées de la manière suivante :

  • NaN (not a number, pas un nombre) pour les questions d’entiers et de décimales. Il s’agit d'une valeur spéciale qui représente l’absence d’une valeur valide.
  • '' (chaîne vide) pour les questions de texte. Le type de données par défaut pour les questions de type select_one (choix unique), select_multiple (choix multiples), rank (classement) et masquées est également texte. Si les types de questions select_one (choix unique), select_multiple (choix multiples) et masquées sont vides ou que le type de question rank (classement) n’a pas été modifié par l’utilisateur, ils contiennent une chaîne vide.

Selon si la valeur est un nombre ou du texte, les comportements lors des calculs diffèrent.

Dans les questions d’entier ou de décimale, le comportement suivant se manifeste :

  • Toute expression mathématique contenant une valeur NaN échoue et la question reste vide.
  • Les fonctions min() et max() aboutissent et ignorent les valeurs NaN.
  • Comparée à d’autres valeurs, la valeur NaN est true (vraie) uniquement dans le calcul d’une valeur de comparaison « n’est pas égal à ». Toutes les autres expressions entraînent la valeur false (faux).

Dans les questions de texte, le comportement suivant se manifeste :

  • La concaténation des questions de type texte aboutit si des valeurs vides sont présentes. Par exemple, "Hello" + ${firstName} + ", how are you?" donne comme résultat "Hello , how are you?" si la question firstName (Prénom) est vide.
  • Les fonctions min() et max() aboutissent et ignorent les chaînes vides.
  • Toute réponse de texte vide est égale à une autre réponse de texte vide ; elle est toujours inférieure à du texte non vide.

Vous pouvez déterminer si une question est vide grâce à la fonction string-length. Vous pouvez utiliser la fonction string-length avec tous les types de questions. Par exemple, string-length(${Question1}) renvoie 0 si Question1 est vide.

Vous pouvez également déterminer si une question à choix unique ou à choix multiples est vide grâce à la fonction count-selected. Par exemple, count-selected(${question2}) renvoie 0 si aucune sélection n’a été effectuée pour question2.

Questions de type select_multiple (choix multiples) et rank (classement)

Les réponses aux types de questions select_multiple (choix multiples) et rank (classement) sont enregistrées différemment de tous les autres types de questions. Chaque réponse vérifiée dans une question select_multiple saisie dans l’ordre dans lequel elle a été sélectionnée, séparée par une virgule. Par exemple, le fait de sélectionner les réponses « A » et « B » dans cet ordre présente la réponse sous la forme « A,B ». Une question de type rank (classement) enregistre également ses réponses dans une liste séparée par des virgules dans l’ordre allant du classement le plus élevé au classement le plus bas au moment de l’envoi.

Certaines fonctionnalités XLSForm ne fonctionnent pas avec les questions de type select_multiple (choix multiples) et rank (classement). Par exemple, si vous saisissez la réponse « A » dans la colonne relevant (pertinent) d’une question faisant référence à votre question à choix multiples et que la réponse à l’enquête est « A,B », la réponse n’est pas considérée comme pertinente. Dans ce cas, la solution consiste à utiliser la fonction selected(), qui vérifie si l’une des valeurs apparaît dans la liste.

L’expression suivante, lorsqu’elle est utilisée dans la colonne relevant (pertinent) d’une question, affiche la question si l’utilisateur a sélectionné « A » comme l’une des réponses dans la question à choix multiples référencée. La présence d’autres réponses dans la question à choix multiples ne change pas ce comportement.

selected(${previous_question}, 'A')

Utiliser du contenu externe

En utilisant la fonction pulldata() dans la colonne calculation (calcul) d’une question, vous pouvez précharger les données à partir d’un fichier CSV. Vous pouvez inclure un fichier CSV de deux manières : en plaçant manuellement le fichier dans le dossier media de l’enquête ou en créant un lien vers un fichier CSV hébergé dans ArcGIS.

La fonction pulldata() nécessite que les quatre paramètres suivants soient précisés, dans l’ordre suivant :

  1. Nom du fichier CSV qui contient la liste de valeurs. Le nom ne contient pas le suffixe de nom de fichier .csv.
  2. Nom de la colonne dans le fichier CSV qui contient la valeur à retourner.
  3. Nom du champ de clé dans le fichier CSV que vous allez utiliser pour rechercher la valeur.
  4. Valeur de clé à rechercher dans le champ de clé.

Ces valeurs peuvent être définies directement ou via des variables définies ailleurs dans l’enquête. Dans l’exemple suivant, le calcul renvoie l’adresse électronique d’une personne nommée dans une question précédente à partir d’un fichier CSV nommé info :

pulldata('info','email','name', ${previous_question})

Cette même fonction pulldata() fonctionne également dans la colonne constraints (contraintes), qui empêche l’utilisateur de fournir des réponses non contenues dans le fichier CSV. Dans la colonne constraints (contraintes), cette même formule empêche le formulaire d’accepter des valeurs non contenues dans la colonne name (nom) du fichier CSV.

Certaines restrictions s’appliquent à la fonction pulldata(). Le nom du champ de clé présente la même limitation que la colonne name (nom) dans la feuille de calcul choices (choix), ce qui signifie que ces valeurs ne peuvent pas contenir d’espaces ou de caractères autres qu’ASCII. En outre, ces fichiers étant de type CSV, l’utilisation d’une virgule dans l’un des champs entraîne des résultats incorrects de la part de la fonction pulldata().

Remarque :

Si vous placez manuellement le fichier CSV dans le dossier media de l’enquête et que chargez ultérieurement un fichier CSV du même nom dans ArcGIS puis que vous le liez à l’enquête, le fichier CSV de l’enquête est mis à jour avec le contenu lié (s’il est plus récent).

Pour lier un fichier CSV à un enquête, procédez comme suit :

  • Assurez-vous que le fichier CSV est hébergé dans ArcGIS Online ou dans ArcGIS Enterprise et qu’il possède les mêmes autorisations de partage que l’enquête.
  • Vérifiez que l’enquête est publiée sur ArcGIS avant d’essayer de lier le contenu.
  • Dans Survey123 Connect, accédez à l’onglet Linked Content (Contenus liés) de l’enquête et cliquez sur le bouton Link content (Lier du contenu). Sélectionnez CSV, accédez au fichier CSV à lier et sélectionnez-le.

Pour utiliser le fichier CSV dans Survey123 Connect, accédez à l’onglet Linked Content (Contenus liés) et choisissez de télécharger le fichier avec le bouton de téléchargement télécharger. Une copie du fichier CSV est alors placée dans le dossier media de l’enquête. Les fichiers liés sont automatiquement téléchargés avec l’enquête dans l’application de terrain Survey123.

Remarque :

La fonction pulldata() ne permet pas de renseigner les valeurs des questions à choix multiples.

Si votre fichier CSV contient des valeurs comportant plus de 255 caractères, vous devez saisir une valeur plus élevée dans la colonne bind::esri:fieldLength, à la fois pour la question que vous renseignez avec le contenu du fichier CSV et pour toute question utilisée en entrée de la fonction pulldata(). Si certaines valeurs de votre fichier CSV dépassent la longueur maximale d’un de ces champs, l’envoi d’une réponse à l’enquête échoue et l’erreur Code 1000 s’affiche.

Lorsque vous utilisez la fonction pulldata(), les noms de colonne de votre fichier CSV ne peuvent pas contenir d’espaces, de traits d’union, ni d’autres caractères spéciaux.

Autres utilisations de l’extraction de données (pulldata)

Vous pouvez utiliser la fonction pulldata() pour extraire les propriétés fournies par l’appareil en utilisant deux paramètres "@property" et le nom de la propriété que vous voulez extraire. L’exemple suivant renvoie le décalage horaire par rapport au temps universel (UTC) de l’appareil pour aider les utilisateurs à enregistrer le fuseau horaire dans lequel l’enquête a été réalisée :

pulldata("@property", 'utcoffset')

Pour plus d’informations sur les propriétés pouvant être extraites, consultez la rubrique Propriétés concernant l’appareil et l’utilisateur.

Vous pouvez également utiliser la fonction pulldata() pour extraire et décomposer les valeurs de la question géopoint. Pour plus d’informations, reportez-vous à la rubrique Géopoints.

Vous pouvez extraire des données EXIF et JSON des questions image à l’aide de la fonction pulldata(). Pour plus d’informations, reportez-vous à la rubrique Éléments multimédias.

La fonction pulldata("@property") permet de détecter le mode d’interaction actuel de l’utilisateur ainsi que sa réponse à l’enquête en utilisant ce qui suit :

pulldata("@property", 'mode')

Trois valeurs sont possibles. La valeur new est renvoyée si l’utilisateur produit une nouvelle réponse à l’enquête (y compris une réponse copiée depuis une enquête existante), la valeur edit est renvoyée si l’utilisateur met à jour une réponse existante et la valeur view est renvoyée si l’utilisateur consulte une réponse existante en mode de lecture seule. L’exemple suivant, lorsqu’il est inséré dans la colonne readonly (lecture seule), détecte si l’utilisateur met à jour une réponse existante et l’empêche de mettre à jour la question choisie :

pulldata("@property", 'mode') = 'edit'

La fonction pulldata("@property") permet également de voir où une enquête a été ouverte. L’exemple suivant vérifie si l’enquête a été ouverte depuis la boîte de réception :

pulldata("@property", 'status') = 'inbox'

Attention :

Il est conseillé de ne pas stocker les résultats des propriétés mode ou status dans un champ masqué ou de calcul et de ne pas activer ou désactiver des questions avec ces propriétés dans la colonne relevant (pertinent). Sinon, le contenu de ces champs risque d’être supprimé ou les valeurs risquent de ne pas s’actualiser comme prévu.