Skip links
powerapps-parametres-heures-dates

PowerApps : comment gérer les dates et les heures dans un contexte international ?

Dans le cadre de l’automatisation des processus métiers ou IT, Microsoft offre de très bons outils, comme PowerApps. Cependant dans certains cas, la gestion des dates et heures peut se révéler être un vrai casse-tête. Et c’est encore plus vrai lorsque les utilisateurs sont présents sur différents fuseaux horaires.

Contexte : un client international

Environnement technique : PowerApps, PowerAutomate et Azure Automation.

etapes-powerapps

Besoin : permettre à des utilisateurs IT présents sur différents fuseaux horaires de programmer des actions :

  • Réinitialiser le jeton d’authentification d’un utilisateur dont le compte serait compromis ;
  • Réinitialiser des comptes invités dans le cadre de partage externe ;
  • Désactiver un compte lors du départ d’un collaborateur ;
  • Déléguer un compte OneDrive à un autre utilisateur.

PowerApps sert d’interface pour effectuer cette action. En effet, il existe un composant « Sélecteur de dates », permettant aux utilisateurs de sélectionner une date de façon simple et efficace. Il est également capable d’afficher l’heure mais ne propose pas de la sélectionner rendant alors la planification plus complexe.

Cette fonctionnalité – a priori basique mais manquante – nécessite donc de bricoler deux listes déroulantes contenant respectivement les heures et les minutes.

ecran-application-microsoft-parametres

Grâce à une formule alambiquée, il est possible de reformater cette date pour qu’elle respecte le format Timestamp attendu par Power Automate.

Concatenate(Text(DateValue(DatePickerToken.SelectedDate); »yyyy-mm-dd »); »T »;DrpTokenHours.Selected.Value; »: »;DrpTokenMinuts.Selected.Value; »Z »)

Ce sélecteur de dates gère dans sa propriété DateTimeZone deux types différents, Local ou UTC.

Les utilisateurs devant planifier la tâche en se basant sur leur fuseau horaire, il est nécessaire de sélectionner le type « Local ».

Toutefois, un problème se pose. En effet PowerAutomate, dans sa fonction « Delay Until » qui permet de mettre en pause une action jusqu’à l’heure programmée, attend un format UTC. Or, pour  pouvoir convertir l’heure envoyée par PowerApps, il faut connaître le fuseau Horaire de l’utilisateur qui a effectué l’action depuis PowerApps.

C’est là qu’une fonction méconnue mais très pratique entre en jeu, la fonction TimeZoneOffset(). En y passant la fonction Now(), qui retourne l’heure locale de l’utilisateur, elle permet de retourner la différence de temps avec l’heure UTC.

code-application-microsoft

La dernière étape consiste à utiliser cette différence de temps pour calculer l’heure UTC, il suffit alors d’utiliser la fonction addToTime() à notre date. Cette fonction, comme son nom ne l’indique pas permet également de soustraire du temps, en effet la valeur envoyée par TimeZoneOffset est de la forme +120 (minutes) ou –120 (Minutes).

Cette petite astuce vous permettra de gérer au mieux vos planifications dans le cadre de développement d’applications avec des utilisateurs qui sont sur des fuseaux horaires différents.

powerapps-parametres-heures-dates
Crédit photo : YouTube Microsoft PowerApps

Laurent Heroguelle