Page 1 sur 1

Boite de dialogue HTML - évenement onclick personalisé

Publié : 24 oct. 2022 09:23
par hamster18
Bonjour,
Je début dans la programmation AppScript (langage de programmation sur Google Sheet).J'ai créé ma propre boite de dialogue avec 3 boutons : "Oui", "Non", "Annuler" définie dans le fichier "boiteDeDialogue.html". J'aimerais que lorsque le bouton "Oui" est cliquer une routine particulière soit effectué. Cette routine est définie dans la fonction clickYes(). Dans cette fonction je fait appelle à une de la fonction recuperer() créer dans "Code.gs" . Cependant j'ai l'impression que la fonction recuperer() de clickYes() n'était pas appelé. Voici mes codes :


function recuperer() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheetSetting = spreadsheet.setActiveSheet(spreadsheet.getSheetByName("Feuille 1"), true);
sheetSetting.getRange("A1").setValue = "coucou";
Logger.log("coucou");
}

<script>
function clickYes(){
console.log("je passes");
google.script.run.recuperer();
google.script.host.close();
}
</script>

<div>
<input type="button" class="btn btn-outline-success fs-5 text fw-bold m-2 px-4" value="Oui" id = "id_btn_yes" name = "name_btn_yes" onclick="clickYes()">
<input type="button" class="btn btn-outline-danger fs-5 text fw-bold m-2 px-4" value="Non" id = "id_btn_no" name = "name_btn_no" onclick="google.script.host.close()">
<input type="button" class="btn btn-outline-secondary fs-5 text fw-bold m-2 px-4" value="Fermer" id = "id_btn_close" name = "name_btn_close" onclick="google.script.host.close()">
</div>

Vous pouvez aussi voir mon fichier google sheet au lien suivant : https://accounts.google.com/v3/signin/identifier?dsh=S-1929025575%3A1666330868896944&continue=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1iA3fhpjdo5Leu2PvMmoRKIne2aUDOhHJPDgUmIpRbx0%2Fedit&followup=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1iA3fhpjdo5Leu2PvMmoRKIne2aUDOhHJPDgUmIpRbx0%2Fedit<mpl=sheets&osid=1&passive=1209600&service=wise&flowName=GlifWebSignIn&flowEntry=ServiceLogin&ifkv=AQDHYWrWek1ti2qsmG0gGENZkpSprENdPLATHuRrY2HNfM5peqE0f6e3MW2jY6yHMwiFgd9b36AOvQ#gid=0

Pouvez vous m'aider à trouver mon erreur ?

Merci d'avance pour votre aide.

Cordialement.

Re: Boite de dialogue HTML - évenement onclick personalisé

Publié : 24 oct. 2022 11:03
par RémiD
Salut hamster18 !
Pour disposer d'un retour Log et avoir un comportement un peu plus maîtrisable je te conseil de faire appel à ta routine serveur avec un ResponseHandler, comme décrit sur cette documentation : https://developers.google.com/apps-scri ... dex.html_1

Le handler te permettra de recevoir sur ton front la réponse du serveur et continuer l’exécution de ton code dès que le serveur à bien exécuté ta requête !
N'hésite pas à créer un nouveau GAppScript contenant l'exemple de la documentation ci-dessus pour essayer d'adapter ça avec ton besoin 😀

J'espère avoir pu t'éclairer un peu plus sur ce point ! Bonne matinée à toi et à très vite !

Re: Boite de dialogue HTML - évenement onclick personalisé

Publié : 24 oct. 2022 15:39
par hamster18
Bonjour RémiD !

La routine de la fonction recuperer() est bateau pour l'instant, je réalise des tests pour la mettre un œuvre ma vrai fonction une fois la solution trouver.

Ainsi je ne comprend pas l'utilité d'utilisé un handler ... car moi c'est vraiment au moment du clique que ma fonction dois être exécuté...

Merci d'avance de ton retour.

Cordialement.

Re: Boite de dialogue HTML - évenement onclick personalisé

Publié : 03 nov. 2022 20:36
par Thierry
Rémi te répondra ASAP, je viens de le pinguer sur notre canal interne SLACK ;-)
 

Re: Boite de dialogue HTML - évenement onclick personalisé

Publié : 04 nov. 2022 10:19
par RémiD
Hello Hamster18 ! J'espère que tu vas bien ?
J'ai pu me pencher un peu plus sur ton problème, et après avoir checké la console j'ai pu constater que c'était ici la fonction "google.script.host.close" qui posait problème !

Voici un exemple de la fonction recuperer() que je viens de re-rédiger 😉
function recuperer() {
const activesheet=SpreadsheetApp.getActive();
const sheetsmod = activesheet.getSheetByName('Feuille 1');
sheetsmod.getRange('A1').setValue('Changé :)');
}


Et le code HTML avec le script lié :
<input type="button" class="btn btn-outline-success fs-5 text fw-bold m-2 px-4" value="Oui" id = "id_btn_yes" name = "name_btn_yes" onclick="clickYes()">
<script>
function clickYes(){
console.log("je passes");
google.script.run.recuperer();}
</script>

En espérant avoir pu t'aider, n'hésite pas à revenir vers nous si tu as des questions ! Bonne journée à toi et à très vite ! :-)