Aktywatory Apps Script powodują, że określona funkcja skryptu (funkcja aktywatora) jest wykonywana za każdym razem, gdy wystąpi określone zdarzenie. Tylko niektóre zdarzenia mogą powodować uruchamianie wyzwalaczy, a każda aplikacja Google Workspace obsługuje inny zestaw zdarzeń.
Gdy reguła zostanie uruchomiona, tworzony jest obiekt zdarzenia. Ta struktura JSON zawiera szczegółowe informacje o zdarzeniu, które miało miejsce. Informacje w strukturze obiektu zdarzenia są uporządkowane inaczej w zależności od typu wywołania.
Po utworzeniu obiektu zdarzenia Apps Script przekazuje go jako parametr do funkcji wywołującej. Funkcja wyzwalająca to funkcja wywołania zwrotnego, którą musisz zaimplementować samodzielnie, aby podjąć odpowiednie działania w odpowiedzi na zdarzenie. Na przykład w dodatku do Edytora wyzwalacz służy do tworzenia elementów menu dodatku po otwarciu dokumentu. W takim przypadku implementujesz funkcję wywołującą onOpen(e), aby utworzyć elementy menu potrzebne dodatkowi, być może używając danych z obiektu zdarzenia.
Na tej stronie znajdziesz wskazówki dotyczące używania reguł w projektach dodatków do edytora.
Typy reguł dodatków do edytora
W dodatkach do edytora możesz używać większości ogólnych typów aktywatorów dostępnych w projektach Apps Script, w tym prostych aktywatorów i większości aktywatorów z możliwością zainstalowania. Dokładny zestaw dostępnych typów wyzwalaczy zależy od rozszerzanej aplikacji.
W tabeli poniżej znajdziesz typy prostych i instalowanych wyzwalaczy, których mogą używać dodatki do Edytora, oraz linki do odpowiednich obiektów zdarzeń:
| Zdarzenie | Obiekt zdarzenia | Proste aktywatory | Wyzwalacze instalowane |
|---|---|---|---|
| Otwórz – otworzy się plik edytora. |
Obiekt zdarzenia onOpen w Dokumentach Obiekt zdarzenia onOpen w Formularzach Obiekt zdarzenia onOpen w Arkuszach Obiekt zdarzenia onOpen w Prezentacjach |
Dokumenty
Formularze*
Arkusze
Prezentacje
|
Dokumenty
Formularze
Arkusze
|
| Zainstaluj Dodatek zostanie zainstalowany. |
obiekt zdarzenia onInstall |
Dokumenty
Formularze
Arkusze
Prezentacje
|
|
| Edytuj Treść komórki arkusza kalkulacyjnego została zmieniona. |
Obiekt zdarzenia onEdit w Arkuszach |
Arkusze
|
Arkusze |
| Zmiana Treść w arkuszu jest edytowana lub formatowana. |
Obiekt zdarzenia onChange w Arkuszach |
Arkusze |
|
| Form-submit Przesłanie formularza Google. |
Obiekt zdarzenia przesłania formularza w Formularzach Obiekt zdarzenia przesłania formularza w Arkuszach |
Formularze
Arkusze
|
|
| Zależne od czasu (zegar) Wywoływacz uruchamia się o określonej godzinie lub w określonych odstępach czasu. |
Obiekt zdarzenia wywoływanego przez czas |
Dokumenty
Formularze
Arkusze
Prezentacje
|
* Zdarzenie otwarcia w przypadku Formularzy Google nie występuje, gdy użytkownik otwiera formularz, aby na niego odpowiedzieć, ale gdy edytujący otwiera formularz, aby go zmodyfikować.
Proste aktywatory w dodatkach
Proste wyzwalacze używają zestawu zarezerwowanych nazw funkcji, nie mogą korzystać z usług wymagających autoryzacji i są automatycznie włączane do użycia. W niektórych przypadkach zdarzenie prostego aktywatora może być obsługiwane przez aktywator z możliwością zainstalowania.
Aby dodać prosty wyzwalacz do dodatku, wystarczy zaimplementować funkcję z jedną z tych zarezerwowanych nazw:
onOpen(e)jest wykonywana, gdy użytkownik otwiera dokument, arkusz kalkulacyjny lub prezentację.onOpen(e)może też być wykonywana, gdy formularz jest otwarty w edytorze (ale nie podczas odpowiadania na formularz). Jest wykonywana tylko wtedy, gdy użytkownik ma uprawnienia do edytowania danego pliku. Najczęściej służy do tworzenia elementów menu.onInstall(e)jest wykonywana, gdy użytkownik zainstaluje dodatek. ZwykleonInstall(e)służy tylko do wywoływaniaonOpen(e). Dzięki temu menu dodatku pojawiają się natychmiast po instalacji bez konieczności odświeżania strony przez użytkownika.onEdit(e)jest wykonywana, gdy użytkownik zmieni wartość komórki w arkuszu kalkulacyjnym. Ten wyzwalacz nie jest uruchamiany w odpowiedzi na przenoszenie komórek, formatowanie ani inne zmiany, które nie modyfikują wartości komórek.
Ograniczenia
Proste wyzwalacze w dodatkach podlegają tym samym ograniczeniom, które obowiązują w przypadku prostych wyzwalaczy w innych rodzajach projektów Apps Script. Podczas projektowania dodatków zwróć szczególną uwagę na te ograniczenia:
- Proste wyzwalacze nie działają, jeśli plik jest otwarty w trybie tylko do odczytu (wyświetlanie lub komentowanie). Uniemożliwia to wypełnianie menu dodatku.
- W pewnych okolicznościach dodatki do Edytora uruchamiają swoje
onOpen(e)ionEdit(e)proste reguły w trybie bez autoryzacji. Ten tryb wiąże się z dodatkowymi komplikacjami, które opisano w modelu autoryzacji dodatków. - Proste wyzwalacze nie mogą korzystać z usług ani wykonywać innych działań, które wymagają autoryzacji, z wyjątkiem przypadków opisanych w modelu autoryzacji dodatku.
- Proste wyzwalacze nie mogą działać dłużej niż 30 sekund. Zadbaj o to, aby zminimalizować ilość przetwarzania wykonywanego w funkcji prostego wyzwalacza.
- Proste aktywatory podlegają limitom aktywatorów Apps Script.
Triggery instalowane w dodatkach
Dodatki mogą programowo tworzyć i modyfikować wywoływacze instalowane za pomocą usługi Script Apps Script. Wywoływaczy instalowanych dodatków nie można tworzyć ręcznie. W przeciwieństwie do prostych wyzwalaczy wyzwalacze instalowane mogą korzystać z usług wymagających autoryzacji.
Triggery instalowane w dodatkach nie wysyłają do użytkownika e-maili z informacjami o błędach, ponieważ w większości przypadków użytkownik nie jest w stanie rozwiązać problemu. Dlatego w miarę możliwości zaprojektuj dodatek tak, aby w imieniu użytkownika elegancko obsługiwał błędy.
Dodatki mogą korzystać z tych wywołań instalowanych:
- Otwórz wywoływane przez instalację skrypty są wykonywane, gdy użytkownik otwiera dokument lub arkusz kalkulacyjny albo gdy formularz jest otwierany w edytorze (ale nie podczas odpowiadania na formularz).
- Edytowanie wywołań instalowanych jest wykonywane, gdy użytkownik zmieni wartość komórki w arkuszu kalkulacyjnym. Ten wyzwalacz nie jest aktywowany w odpowiedzi na formatowanie ani inne zmiany, które nie zmieniają wartości komórek.
- Zmień: wyzwalacze instalowane są uruchamiane, gdy użytkownik wprowadzi dowolną zmianę w arkuszu kalkulacyjnym, w tym zmiany formatowania i modyfikacje samego arkusza (np. dodanie wiersza).
Triggery instalowane Form-submit są uruchamiane, gdy zostanie przesłana odpowiedź w Formularzach Google.
Wyzwalacze oparte na czasie (nazywane też wyzwalaczami zegarowymi) uruchamiają się o określonej godzinie lub wielokrotnie w regularnych odstępach czasu.
Autoryzowanie aktywatorów instalowanych
Zwykle, jeśli deweloper zaktualizuje dodatek, aby korzystał z nowych usług wymagających dodatkowej autoryzacji, użytkownicy są proszeni o ponowne autoryzowanie dodatku przy następnym użyciu.
Dodatki, które korzystają z wyzwalaczy, napotykają jednak specjalne problemy z autoryzacją. Wyobraź sobie dodatek, który używa wyzwalacza do monitorowania przesłanych formularzy: twórca formularza może autoryzować dodatek przy pierwszym użyciu, a następnie pozostawić go do działania przez miesiące lub lata bez ponownego otwierania formularza. Jeśli deweloper dodatku zaktualizuje go, aby korzystał z nowych usług, które wymagają dodatkowej autoryzacji, twórca formularza nigdy nie zobaczy okna ponownej autoryzacji, ponieważ nie otworzył ponownie formularza, a dodatek przestanie działać.
W przeciwieństwie do wyzwalaczy w zwykłych projektach Apps Script wyzwalacze w dodatkach są uruchamiane nawet wtedy, gdy wymagają ponownej autoryzacji. Jednak skrypt nadal nie działa, jeśli napotka wiersz kodu, który wymaga autoryzacji, której skrypt nie ma. Aby uniknąć takiej sytuacji, deweloperzy mogą użyć metody
ScriptApp.getAuthorizationInfo()
do ograniczenia dostępu do części kodu, które uległy zmianie między opublikowanymi wersjami dodatku.
Poniżej znajdziesz przykład zalecanej struktury funkcji wyzwalających, która pozwala uniknąć problemów z autoryzacją. Przykładowa funkcja wyzwalacza reaguje na zdarzenie przesłania formularza w dodatku do Arkuszy Google i w razie potrzeby ponownej autoryzacji wysyła do użytkownika dodatku e-mail z alertem przy użyciu szablonu HTML.
Code.gs
authorizationemail.html
Ograniczenia
Triggery instalowane w dodatkach podlegają tym samym ograniczeniom, które obowiązują w przypadku triggerów instalowanych w innych rodzajach projektów Apps Script.
Oprócz tych ograniczeń w przypadku instalowanych wyzwalaczy w dodatkach obowiązuje kilka dodatkowych ograniczeń:
- Każdy dodatek może mieć tylko 1 wyzwalacz danego typu na użytkownika i dokument. Na przykład w danym arkuszu kalkulacyjnym użytkownik może mieć tylko jeden wyzwalacz edycji, ale może też mieć w tym samym arkuszu wyzwalacz przesyłania formularza lub wyzwalacz oparty na czasie. Inny użytkownik z dostępem do tego samego arkusza kalkulacyjnego może mieć własny zestaw wyzwalaczy.
- Dodatki mogą tworzyć wyzwalacze tylko w pliku, w którym są używane. Oznacza to, że dodatek używany w Dokumencie Google A nie może utworzyć czynnika uruchamiającego, który będzie monitorować otwieranie Dokumentu Google B.
- Triggery oparte na czasie nie mogą być uruchamiane częściej niż raz na godzinę.
- Gdy kod uruchomiony przez wywoływacz instalacyjny zgłosi wyjątek, dodatki nie wysyłają automatycznie e-maila do użytkownika. Programista musi sprawdzać i obsługiwać przypadki niepowodzenia.
- Aktywatory dodatków przestają się uruchamiać w tych sytuacjach:
- Jeśli dodatek zostanie odinstalowany przez użytkownika,
- jeśli dodatek jest wyłączony w dokumencie (po ponownym włączeniu wyzwalacz znów zacznie działać);
- Jeśli deweloper wycofa dodatek z publikacji lub prześle do sklepu z dodatkami uszkodzoną wersję.
- Funkcje aktywatorów dodatków są wykonywane do momentu, gdy napotkają kod korzystający z nieautoryzowanej usługi. W tym momencie ich działanie zostaje przerwane. Dzieje się tak tylko wtedy, gdy dodatek jest opublikowany. Ten sam wyzwalacz w zwykłym projekcie Apps Script lub nieopublikowanym dodatku nie jest w ogóle wykonywany, jeśli jakakolwiek część skryptu wymaga autoryzacji.
- Triggery instalowane podlegają limitom triggerów Apps Script.
Dokumenty
Formularze*
Arkusze
Prezentacje