Ciao, purtroppo in google sheets l'evento click non è possibile gestirlo per i range o le celle. Da ciò che ho visto è possibile ottenere qualcosa del genere per degli oggetti grafici; inserendo delle immagini è possibile associare una macro che viene eseguita al click, quindi cambiare ad esempio il colore di sfondo (vedi questo video).
Una valida alternativa potrebbe però essere quella di usare una scorciatoia da tastiera per eseguire le macro.
Ad esempio è possibile creare una funzione per l'applicazione dello sfondo alle celle selezionate e, attraverso il pannello "Gestisci macro" definire la combinazione da tastiera.
Sarebbe magari più pratico definire due funzioni, una per applicare il rosso e l'altra per il verde.
Ho fatto qualche prova e a me pare abbastanza funzionale e soddisfacente.
Puoi procedere in questo modo:
- Accedi all'editor dal menu "Strumenti > Editor di script", dovrebbe farti editare il file macro.gs dove sono contenute le funzioni delle macro create.
- Inserisci queste 3 funzioni:
codice:
/** @OnlyCurrentDoc */
function coloreRosso() {
coloraCelleAttive('#ff4444');
}
function coloreVerde() {
coloraCelleAttive('#22dd22');
}
function coloraCelleAttive(bgColor) {
var rangeBounds = 'B2:E32'; // Definire qui il range che stabilisce i limiti di applicazione
var sheet = SpreadsheetApp.getActiveSheet();
var rangeList = sheet.getActiveRangeList();
var ranges = rangeList.getRanges();
var rangeB = sheet.getRange(rangeBounds);
var rB = rangeB.getRow();
var cB = rangeB.getColumn();
var hB = rangeB.getHeight();
var wB = rangeB.getWidth();
for(var i in ranges) {
var rangeA = ranges[i];
var rA = rangeA.getRow();
var cA = rangeA.getColumn();
var hA = rangeA.getHeight();
var wA = rangeA.getWidth();
var r = Math.max( rB, rA);
var c = Math.max( cB, cA);
var h = Math.min( hB+rB, hA+rA) - r;
var w = Math.min( wB+cB, wA+cA) - c;
if (!h || !w) continue;
var rangeX = sheet.getRange(r,c,h,w);
rangeX.setBackground(bgColor);
}
}
Qui ho postato l'intero script compresa l'annotazione iniziale, ovviamente se già hai delle altre funzioni nel tuo file macro puoi aggiungere di seguito queste 3.
- Salva la modifica e torna alla pagina principale
- Seleziona il menu "Strumenti > Macro > Importa" quindi dalla relativa finestra aggiungi le due funzioni "coloreRosso" e "coloreVerde"; l'altra funzione "coloraCelleAttive" è quella che fa il lavoro sporco ma non serve importarla nel progetto perché sarà richiamata poi dalle altre due funzioni.
- Seleziona quindi il menu "Strumenti > Macro > Gestisci macro" e dalla relativa finestra definisci le scorciatoie per le due funzioni, ad esempio "Ctrl + Alt + Shift + 1" e "Ctrl + Alt + Shift + 2". Tieni conto che le combinazioni hanno sempre la forma Ctrl+Alt+Shift+Number, possono essere al massimo 10, e il tasto numerico (del relativo numero) è quello della tastiera alfanumerica, non del tastierino numerico (perlomeno a me funziona così).
Il gioco è fatto, o quasi. Puoi fare qualche prova selezionando varie celle, intervalli di celle adiacenti o anche intervalli multipli di celle non adiacenti, quindi premere le due combinazioni definite precedentemente.
La funzione coloraCelleAttive esegue un ciclo dei vari eventuali range (se la selezione ha più intervalli non adiacenti) e applica il relativo colore di background per ciascuna cella che è tra i limiti predefiniti. Puoi infatti definire i limiti attraverso la variabile rangeBounds presente all'inizio ddi questa funzione. Ad esempio se a te interessa poter agire solo tra la colonna B e la E e tra la riga 2 e 32 basterà impostare il range "B2:E32" (che ho definito come esempio nello script). Ho impostato la cosa in questo modo per limitare il più possibile l'errore umano.
Ovviamente le stesse macro e possibile applicarle a due "pulsanti/immagini" in modo che l'applicazione sia eseguita al click su questi (come mostrato nel video linkato sopra)
Vedi se può andare bene e fai sapere