(GSheets) Sélecteur de feuille à partir d'un sidebar avec des boutons radio
Bonjour,
Voici un outil permettant de sélectionner une feuille dans le "sidebar" d'une feuille de calcul (google sheets) avec des boutons radio.
https://docs.google.com/spreadsheets/d/1_Q1Ym9Pk-5HhR3sbJvVcoeZkta_V8nCQvE5Zqm24Erk/copy
Le code est le suivant :
- le fichier Code.gs positionne le bouton sidebar pour le lancement de la barre latérale etc......
function onOpen(e) { SpreadsheetApp.getUi() // Or DocumentApp or FormApp. .createMenu('🎭Sidebar🎭') .addItem('Lancement', 'showSidebar') .addToUi(); } function showSidebar(){ var ui = SpreadsheetApp.getUi(); var html = HtmlService .createTemplateFromFile("index") .evaluate(); html.setTitle("Boutons Radio customisé"); ui.showSidebar(html); } // Crée une fonction d'importation ou d'inclusion pour que les fichiers puissent être ajoutés // à l'intérieur de l'index principal. function include(filename){ return HtmlService.createHtmlOutputFromFile(filename) }; function monresult(txt){ try { var valide = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(txt).activate(); txt =""; } catch(err) { var valide = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Ctrl + enter pour voir le journal des erreurs Logger.log(err); Browser.msgBox('Vous n\'avez pas choisi de feuille ou il n\'y a pas la feuille demandée '); } //google.script.host.close(); }; function listeFeuilles() { var out = new Array() var f = SpreadsheetApp.getActiveSpreadsheet().getSheets(); for (var i=0 ; i<f.length ; i++) out.push( [ f[i].getName() ] ) return out }
- le fichier
index.html
est le suivant
<!DOCTYPE html>
<html>
<body>
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<p>Votre choix d'onglet</p>
<? var data = listeFeuilles(); ?>
<form>
<?
for (var i = 0; i < data.length; i++) { ?>
<input type="radio" name="onglet" value="<?= data[i] ?>"><?= data[i] ?><br>
<? } ?>
</form>
<br>
<div id="lastButtonBlock" class="block">
<button onclick="myFunction()" class ="action button actionButton" > Valider l'Onglet </button>
<button onclick="google.script.host.close()" class ="create deleteButton actionButton" >Fermer le dialogue </button>
</div>
<br>
<div class="sidebar bottom">
<img src="data:image/jpeg;base64,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" alt="21318">
<span class="gray"> Réalisé par gilbert.rgi en 2020</span>
</div>
</body>
<script>
function myFunction() {
var x = (document.forms.length)-1;
var onglet = document.forms[x];
var txt = "";
var i;
for (i = 0; i < onglet.length; i++) {
if (onglet[i].checked) {
txt = txt + onglet[i].value ; // + " ";
}
}
google.script.run.monresult([txt])
for (i=0; i < onglet.length; i++){
//Si balise de type radio on met checked = false
if(onglet[i].type == 'radio') { onglet[i].checked = false};
}
};
</script>
</html>
La page html est avec mon logo grâce aux indications de Sébastien
Merci également à Steelson pour son aide.