Bonjour à toutes et à tous,
Comme pour nombre d'entre vous, je débute sur les scripts de Google.
Je dois réaliser un tableau pour l'instruction de permis de construire pour plusieurs communes.
En fouinant, j'ai récupéré de quoi concevoir ma feuille (sheet que j'ai nommé "2023") avec le code HTML permettant d'afficher la boite de dialogue comprenant toutes les informations à demander par permis. Elle est composée de 2 balises "select" et de balises "input" avec un bouton "ajouter". Je passe sur toutes les méthodes de vérifications (champs vide, non valides, format...) je m'en occuperais plus tard.
Pour le moment, je cherche surtout à écrire sur ma feuille (2023 donc) ce qu'on saisi dans la boite de dialogue avec pour seule condition (pour l'instant) d'écrire ces information dans les lignes réservées à la commune choisie dans la boite de dialogue.
Pour la boite de dialogue, je me suis servi de la page : https://www.sheets-pratique.com/fr/codes/sidebar
Il y a donc un test à faire sur la commune choisie (via un select sur la boite de dialogue), une recherche sur la feuille (2023) pour situer la dernière ligne du "range" correspondant à cette commune et écrire les données.
Je ne vous demande pas d'écrire le code, mais juste un peu d'aide et d'orientation. Normalement, j'arrive à me débrouiller...
Je vous remercie d'avance,
Alain.
Apps script récupération et écriture - boite de dialogue HTML Le sujet est résolu
Re: Apps script récupération et écriture - boite de dialogue HTML
Hello Alain !
Merci pour les précisions sur ton projet et son fonctionnement.
La grosse partie de ton script se trouvera effectivement dans le process de mise à jour des ranges, et voici quelques pistes pour t'aider à mettre tout ça en place :
- Une fois que tu as récupéré les infos via les select + input de ta sidebar, il faudrait stocker tout ça dans des variables, dans le but de l'exploiter plus tard dans ton code,
- Je te recommande ensuite de créer une fonction, qui va aller vérifier toutes les colonnes contenant les communes, et déclencher une action une fois la commune sélectionnée par l'utilisateur ciblée,
- Dès que tu as le numéro de cellule, tu pourras reporter le commentaire correspond dans la cellule voisine à l'aide d'un getRange + setValues,
Voici un exemple de code te permettant de réaliser ça :
function testCommune(NomCommune, CommentaireCommune)
{
const f = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("2023");
const celluleCommunes = f.getRange('A1:A40');
let Communes=celluleCommunes.getValues();
Communes.forEach(function(elCommune, index) {
console.log(elCommune);
if(elCommune==NomCommune) // Remplacer par la valeur extraite du select
{
f.getRange('B' + (index+1)).setValue(CommentaireCommune);
}
});
}
Comme tu peux le voir, la fonction au dessus attend en argument : la commune + le commentaire lié à celle-ci.
- Elle va ensuite sélectionner la feuille 2023, et récupérer les champs de A1 à A40 (cette colonne contient le nom des communes).
- Une boucle foreach est ensuite lancée, pour parcourir les cellules une par une, jusqu'à trouver le nom de la commune passé en argument (NomCommune), une fois ce nom localisé, on met à jour la cellule voisine (BX) en insérant le commentaire passé en argument !
Ce script est vraiment un exemple très simpliste, dans le but de t'orienter pour la conception de ta propre fonction
J'espère que ce message aura pu t'aider, n'hésite pas à revenir vers nous si tu as besoin de plus de précisions !
Bonne fin de matinée et à très vite !
(Si tu as besoin de plus de tutos, je te conseille d'explorer la section "Apps Script" sur Numeriblog !)
Merci pour les précisions sur ton projet et son fonctionnement.
La grosse partie de ton script se trouvera effectivement dans le process de mise à jour des ranges, et voici quelques pistes pour t'aider à mettre tout ça en place :
- Une fois que tu as récupéré les infos via les select + input de ta sidebar, il faudrait stocker tout ça dans des variables, dans le but de l'exploiter plus tard dans ton code,
- Je te recommande ensuite de créer une fonction, qui va aller vérifier toutes les colonnes contenant les communes, et déclencher une action une fois la commune sélectionnée par l'utilisateur ciblée,
- Dès que tu as le numéro de cellule, tu pourras reporter le commentaire correspond dans la cellule voisine à l'aide d'un getRange + setValues,
Voici un exemple de code te permettant de réaliser ça :
function testCommune(NomCommune, CommentaireCommune)
{
const f = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("2023");
const celluleCommunes = f.getRange('A1:A40');
let Communes=celluleCommunes.getValues();
Communes.forEach(function(elCommune, index) {
console.log(elCommune);
if(elCommune==NomCommune) // Remplacer par la valeur extraite du select
{
f.getRange('B' + (index+1)).setValue(CommentaireCommune);
}
});
}
Comme tu peux le voir, la fonction au dessus attend en argument : la commune + le commentaire lié à celle-ci.
- Elle va ensuite sélectionner la feuille 2023, et récupérer les champs de A1 à A40 (cette colonne contient le nom des communes).
- Une boucle foreach est ensuite lancée, pour parcourir les cellules une par une, jusqu'à trouver le nom de la commune passé en argument (NomCommune), une fois ce nom localisé, on met à jour la cellule voisine (BX) en insérant le commentaire passé en argument !
Ce script est vraiment un exemple très simpliste, dans le but de t'orienter pour la conception de ta propre fonction
J'espère que ce message aura pu t'aider, n'hésite pas à revenir vers nous si tu as besoin de plus de précisions !
Bonne fin de matinée et à très vite !
(Si tu as besoin de plus de tutos, je te conseille d'explorer la section "Apps Script" sur Numeriblog !)
Re: Apps script récupération et écriture - boite de dialogue HTML
Bonjour Rémi,
Merci infiniment pour la réponse.
J'ai effectivement commencé à écrire quelque chose comme ça. Je vais donc peaufiner dans ce sens en reprenant ta trame.
Avec quelques recherches supplémentaires, je devrais pouvoir m'en sortir.
Si je n'y arrive pas, je posterais l'ensemble de mon code pour voir où ca bloque.
Un grand merci.
Merci infiniment pour la réponse.
J'ai effectivement commencé à écrire quelque chose comme ça. Je vais donc peaufiner dans ce sens en reprenant ta trame.
Avec quelques recherches supplémentaires, je devrais pouvoir m'en sortir.
Si je n'y arrive pas, je posterais l'ensemble de mon code pour voir où ca bloque.
Un grand merci.
Rejoignez la discussion 💬
Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres
Inscrivez-vous dès aujourd'hui
Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles
Inscription