onOpen na określonym arkuszu w AppScript
Mam onOpenkod wykonania, ale chcę, aby był wykonywany tylko wtedy, gdy zostanie otwarty określony arkusz (na przykład przy otwieraniu Sheet1funkcji onOpen powinna zostać uruchomiona). Czy ktoś wie, jak to osiągnąć?
Oto, co dokładnie chcę osiągnąć:
- Po otwarciu arkusza kalkulacyjnego sprawdź, czy aktywny arkusz to arkusz1. W przypadku, gdy następnie wykonuje warunek w tym arkuszu, jak pokazano poniżej:
onOpen() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
Ale tutaj jest problem z powyższym stwierdzeniem:
onOpen sprawdzi tylko po otwarciu arkusza. Chcę to sprawdzić za każdym razem, gdy aktywnym arkuszem jest „Arkusz1”. Na przykład, początkowo użytkownik otwiera arkusz kalkulacyjny, przechodzi do arkusza „Arkusz1”. Teraz warunek jest sprawdzany i wyświetlany jest wynik, ale co, jeśli użytkownik zmieni kartę na „Arkusz2”, a następnie wróci do „Arkusza1”. W takim przypadku onOpen()nie zostanie wykonany. Chcę przeprowadzić kontrolę za każdym razem, gdy użytkownik wyląduje lub przełączy się na „Sheet1”.
A teraz kolejny scenariusz:
używając onSelectionChange:
onSelectionCHange() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
Teraz to będzie działać za każdym razem, gdy użytkownik przełączy się na „Arkusz1”, ale tutaj jest problem, nawet jeśli użytkownik przełączy się na różne komórki w „Arkuszu1” onSelectionChange, co jest ponownie niepożądane. Chcę tylko uruchamiać funkcję za każdym razem, gdy zakładka / arkusz zostanie zmieniony na „Arkusz1”, a nie tylko wtedy, gdy arkusz kalkulacyjny zostanie otwarty lub zmieniona zostanie dowolna komórka zaznaczenia.
Odpowiedzi
Wyjaśnienie:
Aby wykonać blok kodu wewnątrz onOpenfunkcji tylko wtedy, gdy otwierasz plik arkusza kalkulacyjnego z Sheet1 , możesz skonstruować następujący warunek 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
}
}
Wada:
OnOpen funkcja jest wykonywana tylko wtedy, gdy otworzy się arkusz kalkulacyjny pliku. Nie możesz po prostu przełączać się między arkuszami i oczekiwać, że onOpen będzie działać.
Rozwiązanie:
Aby wykonać kod podczas przełączania się między różnymi arkuszami, możesz zamiast tego użyć onSelectionChange(e). Poniższy przykład ustawia wartość komórki A1 arkusza Sheet1 po przełączeniu się z innego arkusza do Sheet1 :
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
as.getRange('A1').setValue("This is Sheet1");
}
}
A oto ogólny szablon kodu do wykonania kodu podczas przełączania na Sheet1 :
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
// put your code here
}
}
Bibliografia:
- onOpen (e)
- onSelectionChange (e)