une première proposition avec un menu spécifique
1ère étape : activer
2ème étape, lancer l'interface de recherche
le mot peut être incomplet
script
code.gs :
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem('👉 Activer ...', 'init')
.addItem('👉 Rechercher ...', 'emphasize')
.addToUi();
}
function init() {
SpreadsheetApp.getActive().toast("L'application est initialisée.");
}
function emphasize() {
const html = HtmlService.createHtmlOutputFromFile('index').setTitle('Rechercher dans la feuille ...');
SpreadsheetApp.getUi().showSidebar(html);
}
function delFormat() {
const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sh.getDataRange().setBackground(null)
}
function formatCells(terme) { // cellule complète
let ranges = SpreadsheetApp.getActive()
.createTextFinder(terme)
.matchEntireCell(false)
.matchCase(false)
.matchFormulaText(false)
.ignoreDiacritics(true)
.findAll();
ranges.forEach( range => { range.setBackground("lightblue"); });
}
index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<style>
body {
padding: 0 0.5rem; /* à remplacer par "margin: 0;" si affiché dans une boîte de dialogue */
color: #333;
font-family: Roboto, Arial, sans-serif;
}
p {
margin: 0.8rem 0 0.3rem;
}
input[type="text"] {
font-family: Roboto, Arial, sans-serif;
display: block;
width: 100%;
box-sizing: border-box;
margin-bottom: 1rem;
padding: 0.6rem 0.7rem;
background: #f3f3f3;
color: #444;
border: none;
font-size: 1.08rem;
border-radius: 0.4rem;
}
input[type="button"] {
display: block;
width: 100%;
padding: 0.7rem 0 0.6rem;
border: none;
background: #30a392;
color: #fff;
font-size: 1.15rem;
cursor: pointer;
border-radius: 0.4rem;
}
input::placeholder {
color: #aaa;
}
</style>
<script>
function afficher1() {
var mot = document.getElementById("word").value;
google.script.run.formatCells(mot);
}
function effacer() { google.script.run.delFormat(); }
</script>
</head>
<body>
<form>
<br /><br />
<input type="text" id="word" name="word" placeholder="Mot à rechercher">
<br /><br />
<input type="button" value="afficher" onclick="afficher1()">
<input type="button" value="effacer" onclick="effacer()">
</form>
</body>
</html