GAS - Conflit si plusieurs utilisateurs

Bonjour,

J'ai un Google Sheet dans lequel j'ai écris du code GAS qui me permet d'aller chercher de la data dans des API, puis de mettre cette data en forme.

Cet outil de reporting a vocation a être utilsé par plusieurs collaborateurs, et quand 2 collaborateurs demandent en même temps le rafraichissement de la donnée, il y a conflit et l'outil bug (ce qui est normal finalement). Tant qu'il n'y a qu'un rafraichissement, aucun problème.

Voici le code principal avec la création de boutons dans la barre de menu + les appels aux fonctions derrière les boutons. :

function onOpen() {
  SpreadsheetApp
    .getUi()
    .createMenu("Pilotage")
    .addItem('Refresh Data', 'totalrefresh')
    .addItem('Synthesis', 'synthesisrefresh')
    .addToUi();
}

function totalrefresh() {
  CleanData();
  CleanRanges();
  GetHubb();
  LoadDataMap();
  LoadData();
  Objectives();
  CleanRangeObj();
  OrdreRange();
  Synthesis();
}

function synthesisrefresh() {
  Synthesis();
}

J'aimerai 'griser' les boutons si un collaborateur a déja lancé le rafraichissement depuis son poste.

'griser' : rendre l'utilsation du bouton impossible ou faire afficher une pop up si il y a une demande de rafraichissement alors qu'un rafraichissement a déja eu lieu.

J'ai essayé de résoudre cela avec un simple token mais cela n'a pas fonctionné.

Est ce que l'un de vous a déja eu ce genre de problématique à résoudre? Si oui, peut il me conseiller ?

Cédric

Bonjour,

Jamais eu de telle situation, par contre vous pouvez précéder votre requête API d'une vérification, par exemple, lors de l'exécution de votre requête, cela inscrit quelque part sur votre fichier "dernière màj le 23/10/2023 à 09:39".

Puis, dans votre script vous comparez la date de cette cellule avec le jour actuel et si c'est identique, vous faites apparaitre un popup : "attention, extraction déjà réalisée ce jour, êtes-vous certain de vouloir continuer ? - oui / - non"

Bonjour,

Je n'ai pas le temps de développer mais voici quand même 2 pistes ...

Enregistrer une information (par exemple la date de la dernière mise à jour) : https://developers.google.com/apps-script/reference/properties?hl=fr

Verrouillage (pour empêcher par exemple d'exécuter un script par quelqu'un d'autre avant la fin du script en cours) : https://developers.google.com/apps-script/reference/lock?hl=fr

Cordialement,

Super.

Merci à tous les 2.

Je vais essayer avec la piste :

Verrouillage (pour empêcher par exemple d'exécuter un script par quelqu'un d'autre avant la fin du script en cours) : (Lien sur developers google que je ne peux pas mettre dans mon texte)

Je mettrai mes avancés dans le sujet pour tenir au courant.

Cédric

Rechercher des sujets similaires à "gas conflit utilisateurs"