onOpen su un foglio specifico in AppScript
Ho un onOpencodice di esecuzione ma voglio che venga eseguito solo quando viene aperto un foglio specifico (ad esempio all'apertura Sheet1della funzione onOpen dovrebbe essere eseguita.) Qualcuno sa come ottenere questo?
Ecco cosa voglio esattamente ottenere:
- All'apertura del foglio di calcolo, controlla se il foglio attivo è sheet1. Nel caso in cui venga quindi eseguita una condizione all'interno di quel foglio, come mostrato di seguito:
onOpen() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
Ma ecco il problema con l'affermazione sopra:
onOpen controllerà solo una volta aperto il foglio. Voglio controllarlo ogni volta che il foglio attivo è "Sheet1". Quindi, ad esempio, inizialmente l'utente apre il foglio di calcolo, arriva a "Foglio1" Ora la condizione viene controllata e viene visualizzato l'output, ma cosa succede se l'utente cambia la scheda per dire "Foglio2" e poi torna a "Foglio1". In tal caso onOpen()non verrà eseguito. Voglio eseguire il mio controllo ogni volta che l'utente atterra o passa a "Foglio1".
Ora ecco un altro scenario:
utilizzando onSelectionChange:
onSelectionCHange() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
Ora questo funzionerà ogni volta che l'utente passa a "Foglio1", ma ecco il problema, anche se l'utente passa a celle diverse in "Foglio1" onSelectionChangeverrà attivato, il che è di nuovo qualcosa di indesiderato. Tutto quello che voglio è attivare la funzione solo ogni volta che la scheda / foglio viene modificato in "Foglio1" e non solo quando il foglio di calcolo viene aperto o viene modificata una cella di selezione.
Risposte
Spiegazione:
Per eseguire un blocco di codice all'interno della onOpenfunzione solo quando apri il file del foglio di calcolo da Sheet1 , puoi costruire la seguente condizione if:
function onOpen(e) {
const as = e.source.getActiveSheet().getName();
if (as == 'Sheet1'){
//code you want to be executed when you open the spreadsheet from Sheet1
}
}
Inconveniente:
La funzione onOpen viene eseguita solo quando si apre il file del foglio di calcolo . Non puoi semplicemente passare da un foglio all'altro e aspettarti che onOpen funzioni.
Soluzione:
Per eseguire un codice quando si passa da un foglio all'altro è invece possibile utilizzare onSelectionChange(e). L'esempio seguente imposta il valore della cella A1 di Sheet1 quando si passa da un foglio diverso a Sheet1 :
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
as.getRange('A1').setValue("This is Sheet1");
}
}
Ed ecco un modello di codice generale per eseguire un codice quando si passa a Sheet1 :
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
// put your code here
}
}
Riferimenti:
- onOpen (e)
- onSelectionChange (e)