Créer un bouton pour affichier boite de dialogue qui renseigne la feuille

Ah c'est top ! Le code fonctionne, par contre ça fonctionne bien sur le 30 minutes, mais pas sur le 15 mn ... 🤔

Si je passe par le 30 minutes, ça s'applique bien sur les 2 cases.

Par contre, si je passe par le 15mn, le blocage ne se déclenche pas...

Serait-ce à cause de cette ligne qui serait en trop dans l'option "G2"?

setHorodateAction(new Date())

EDIT : Ah ! Il semblerait que ce soit cela. Je l'ai retiré et ça fonctionne !

C'est vraiment super, encore merci!!!!!

Bien vu, cette instruction était en trop.

C'est la première fois que j'utilisais PropertiesService.getUserProperties()

Si tout est ok, clos ce fil de discussion en cliquant sur

Fait à l'instant 😊

Encore merci pour tout !

Bonjour,

J'ouvre de nouveau le sujet ... je rencontre une difficulté au sujet de la case à cocher qui renseigne un onglet ...

Tout fonctionne à merveille ... sauf quand je passe par un smartphone, et ça bloque complètement mon projet.

Est-ce que quelqu'un sait pourquoi tout fonctionne sur ordi, mais pas sur un smartphone ? Peut-on régler ce problème ?

Merci beaucoup pour vos retours.

François

Bonjour,

Malheureusement certaines fonctions ne fonctionnent pas sur les portables et les smartphones

il y a des incompatibilités encore

salutations

Oh non ...

Merci pour ton retour ... quel dommage. Tout mon projet tombe à l'eau, et je vais devoir trouver une solution alternative.

Auriez-vous une idée de ou est-ce que je pourrais trouver quelqu'un qui puisse développer une application ailleurs que sur Google Sheet ?

Qu'est-ce qui bloque sur android ? Normalement le fait d'utiliser une case à cocher doit fonctionner. Est-ce que c'est l'envoi du mail. Ou est-ce la temporisation via PropertiesService.getUserProperties() parce que l'on pourrait le faire autrement.

Il s'avère que quand je passe par ordi, et que je clique sur une case à cocher, j'ai bien la boite de dialogue qui s'ouvre pour me proposer de confirmer la case cochée.

Quand je passe par android, la case cochée reste cochée, aucune validation n'est demandée, et l'onglet sessions n'est pas alimenté. Un peu comme si les cases à cocher étaient "débranchées" ...

oui les cases à cocher fonctionnent mais il y a d'autres fonctions (script) que l'on ne peut pas utiliser encore enfin c'est ce que j'ai constaté.

Micke trouvera peut-être une solution

en effet les boites de dialogue ne fonctionnent pas sur I/Os non plus

Va falloir procéder par étapes ... je regarde cela. Si j'ai besoin d'aide, je t'enverrai des scripts (on partagera les fichier plutôt).

Ok, merci beaucoup alors :-)

Je me tiens disponible.

(Mikhail, je me suis permis de t'envoyer un petit MP)

Browser.msgBox ne fonctionne pas sous android et bloque.

Le grille-pain (function toast qui permet de faire apparaître un message en bas à droite) ne bloque pas, mais je ne vois pas apparaitre sur mon téléphone.

Les fonctions PropertiesService.getUserProperties() sont ok.

Ceci fonctionne MAIS, le seul "retour" d'information que j'ai trouvé pour le moment est que

  • - si c'est ok le coche se défait
  • - si c'est pas ok, le coche reste "enclenché"

J'ai tenté de mettre un message dans une cellule, mais cela ne fonctionnait pas correctement ! (sans doute à cause du onEdit), et je n'ai pas réussi avec lock !

Je ne sais pas si Gilbert a des solutions pour retourner l'info ok/pas ok ! Afficher/Masque une icone ok/notOk ?

function onEdit(event){
  var delai = 1 // minutes
  var feuille = event.source.getActiveSheet();
  var cellule = event.source.getActiveRange();
  if (feuille.getName()=='Feuille 1'){
    var fSessions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sessions');
    var derL=fSessions.getLastRow()+1
    if (cellule.getA1Notation()=='G2' && cellule.getValue()){
      d=new Date()
      if (d.getTime()-getHorodateAction() < delai * 60000){
        toast('Trop rapide !')
      }else{
        fSessions.getRange('A'+derL).setValue(d)
        setHorodateAction(d.getTime())
        fSessions.getRange('B'+derL).setValue(cellule.offset(0,1).getValue())
        toast('OK Reporté dans "Sessions"') 
        cellule.setValue(false)
      }
      //cellule.setValue(false)
    }
    if (cellule.getA1Notation()=='G3' && cellule.getValue()){
      d=new Date()
      if (d.getTime()-getHorodateAction() < delai * 60000){
        toast('Trop rapide !')
      }else{
        fSessions.getRange('A'+derL).setValue(d)
        setHorodateAction(d.getTime())
        fSessions.getRange('B'+derL).setValue(cellule.offset(0,1).getValue())
        toast('OK Reporté dans "Sessions"')
        cellule.setValue(false)
      }
      //cellule.setValue(false)
    }
  }
}
function toast(body, title, timeout) {
  return SpreadsheetApp.getActive().toast(
    body,
    title || "information",
    timeout || 5 // In seconds
  );
}
function setHorodateAction(value) {
  return PropertiesService.getUserProperties().setProperty("ACTION", value);
}
function getHorodateAction() {
  return PropertiesService.getUserProperties().getProperty("ACTION") || "";
}
function clearHorodateAction(){
  PropertiesService.getUserProperties().deleteProperty("ACTION");
}

je n'ai pas regardé les autres codes que celui que j'avais fait.

https://docs.google.com/spreadsheets/d/1xijtvF5CygD74FFX_emaIA8L2p8NAx1bbHZIFG4FWvA/edit?usp=sharing

J'ai ajouté une couleur rouge sur la case à cocher quand le traitement n'a pas pu être fait pour des questions de délai.

Bonjour,

Merci beaucoup de te pencher sur mon cas. C'est top la case qui devient rouge quand il y a un souci.

Alors, j'ai continué à faire des tests de mon côté et j'ai découvert un truc qui pourrait peut-être nous mettre sur la voie.

Je constate que, quand on se met en navigateur privé sur ordinateur, le script ne s'exécute pas. Je constate donc que, navigateur privé ou smartphone, le problème rencontré est similaire : Quand on coche une case, elle reste cochée, aucun report n'est fait dans "Sessions", en somme, rien ne se passe.

Et peut-être que dans l'autre sens, cela fonctionnerait aussi ? Si on arrive à faire fonctionner le script sur navigateur privé, alors ça fonctionnera sur Smartphone.

Qu'en pensez-vous ?

Hop, hop, hop ! pour moi, avec mon téléphone, si je coche la case le script s'exécute (sauf si la dernière action a eu lieu avant la minuté écoulée que j'ai mise en paramètre).

Oh mince... J'ai réessayé mais ça ne fonctionne pas 🤔

Je vais essayé avec d'autres smartphone.

Est-ce que tu as une idée de la raison pour laquelle ça ne fonctionnait pas sur certains tel? Et pourquoi ça ne fonctionne pas en navigation privée?

Édit : j'ai réessayé, avec mon téléphone, le report dans la feuille "sessions" fonctionne, mais pas de boîte de dialogue.

Et si j'essaie de ressaisir, la case s'allume en rouge... Et elle reste cochée.

Non, en effet il n'y a pas de boite de dialogue (le 'toast' ne fonctionne pas sur smartphone mais ne bloque pas le script, d'où l'idée de mettre en rouge quand cela n'a pas fonctionné). Je n'ai aucune idée quand au fonctionnement sur d'autres smartphones !

est-ce que l'utilisation de chrome ne serait pas la solution du fonctionnement où pas ????

Rechercher des sujets similaires à "creer bouton affichier boite dialogue qui renseigne feuille"