Page 1 sur 1

Synchronisation APP SCRIPT

Publié : 04 déc. 2022 21:14
par Antoine
Bonjour,
J'espère que vous allez bien.
Je me permets de venir vers vous car je bloque depuis des semaines sur mon code. Je pense avoir trouver la raison mais je n'ai pas la solution.

Pour résumer mon projet, j'ai des fournisseurs qui vont remplir une fiche avec leurs données en gestionnaire de contenu.
J'ai beaucoup de fournisseurs, donc je souhaite avoir un fichier global.

J'ai mis en place un script qui va recherche toutes les données de ces fiches sous forme de =IMPORTRANGE(...) pour que quand un fournisseur met à jour ses données, mon fichier global se mette à jour automatiquement.
Cependant mon code fonctionne 1 fois sur 4 alors que le code reste inchangé !

Je pense avoir trouvé la source d'erreur. Je pense que la traduction dans google sheet n'est pas synchronisée avec le script. Ce qui est source d'erreur.
Exemple, pour les sites de fabrication de mes fournisseurs.
Dans la fiche fournisseur, j'ai 5 sites.
Dans mon fichier global, mon script va faire :
1/ une première recherche via un IMPORTRANGE du nombre de site que je vais mettre dans la cellule A1 de mon fichier global.
2/ Cette donnée va être stocké dans une variable N.
3/ Ensuite, une boucle de 1 à N va rechercher tous les sites pour les recopier dans mon fichier global.

Cependant, l'étape 1 prend un certain temps. Et alors que c'est écrit Loading... Les étapes 2 et 3 s'enchaînent tout de suite ce qui faussent tout car le script considère qu'il n'y a pas de sites !

J'ai essayé de mettre Utilities.sleep(5000); entre les étapes 1 et 2. Mais le temps de pause s'exécute au début de l'exécution du script !
J'ai également mis un message box entre les étapes 1 à 2. Mais cela s'affiche en début.

Est-ce normal que l'affichage des données dans sheet ne suit pas l'ordre d'exécution du script svp ?
Un grand merci pour l'aide apportée !
Antoine.

Re: Synchronisation APP SCRIPT

Publié : 05 déc. 2022 00:05
par RémiD
Bonsoir Antoine, j'espère que tu vas bien,
Tout d'abord merci pour cette explication ! (pas forcément évident de décomposer son code comme ça)
Pour résumer : ton code va attendre le retour d'une fonction GAppScript, mais celle-ci prend plus de temps à s’exécuter, et l’exécution de ton script continue son cours sans attendre le retour de celle-ci.
Ton cas d'usage tombe parfaitement dans l'utilisation d'une promesse.

Il faudrait donc que tu mettes en place une promesse, qui stockera la réponse de la fonction AppScript et attendra son retour pour l'exploiter !
Voici un petit lien vers une documentation : https://developer.mozilla.org/fr/docs/W ... g_promises

N'hésite pas à revenir vers nous avec ton code si tu as besoin d'aide pour l'implémentation, en attendant je te souhaite une bonne soirée,
En espérant avoir pu t'aider :)