Quand j'ai vraiment beaucoup d'onglets, j'utilise ceci (idée de base = Gilbert que je salue)
Code gs
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Δ Parcourir les feuilles Δ')
.addItem('Ouvrir la fenêtre ...', 'naviguer')
.addToUi();
}
function naviguer(){
var ui = SpreadsheetApp.getUi();
var html = HtmlService
.createTemplateFromFile("index")
.evaluate();
html.setTitle("Navigation entre onglets :");
ui.showSidebar(html);
}
function choixFeuille(txt){
try {
var valide = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(txt).activate();
txt ="";
}
catch(err) {
var valide = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Browser.msgBox('Erreur ' + err + ' !');
}
};
function listeFeuilles() {
var out = new Array()
var f = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i=0 ; i<f.length ; i++) out.push( [ f[i].getName(), f[i].getTabColor() ] )
return out
}
code index.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<style>body{margin:12px;}</style>
</head>
<body>
<? var data = listeFeuilles(); ?>
<form>
<? for (var i = 0; i < data.length; i++) { ?>
<input type="radio" name="onglet" onclick="selectionner()" value="<?= data[i][0] ?>"><span style='color:<?= data[i][1] ?>'>■ </span><?= data[i][0] ?><br>
<? } ?>
</form>
<div class="sidebar bottom">
<span class="gray">Mike Steelson 2021</span>
</div>
<script>
function selectionner() {
var x = (document.forms.length)-1;
var onglet = document.forms[x];
for (var i = 0; i < onglet.length; i++) {
if (onglet[i].checked) {var txt = onglet[i].value}
}
google.script.run.choixFeuille(txt)
};
</script>
</body>
</html>