Google Apps Script wymaga autoryzacji użytkownika, aby uzyskać dostęp do danych prywatnych z wbudowanych usług Google lub zaawansowanych usług Google.
Jak działa autoryzacja w usługach Google
Gdy skrypt wymaga dostępu do usług Google, wykonuje te ogólne czynności:
- Wykrywanie: Apps Script skanuje skrypt, aby określić, z których usług korzysta (np.
SpreadsheetApplubGmailApp). - Określanie zakresu: na podstawie skanowania Apps Script identyfikuje zestaw zakresów OAuth potrzebnych do uruchomienia skryptu.
- Sprawdzanie autoryzacji: po uruchomieniu skryptu sprawdza on, czy użytkownik autoryzował już te zakresy.
- Prośba do użytkownika: jeśli brakuje autoryzacji, wyświetla się okno z prośbą o przyznanie uprawnień.
- Wykonanie: po autoryzacji skrypt może uzyskać dostęp do żądanych danych użytkownika.
Uprawnienia i typy skryptów
Tożsamość użytkownika, z którą skrypt jest uruchamiany, a tym samym dane, do których ma dostęp, różni się w zależności od scenariusza, w którym skrypt jest uruchamiany, jak pokazano w tabeli poniżej.
| Rodzaj skryptu | Skrypt jest uruchamiany jako… |
|---|---|
| samodzielny, dodatek do Google Workspace lub powiązany z Dokumentami Google, Arkuszami Google, Prezentacjami Google lub Formularzami Google | Użytkownik przy klawiaturze |
| Funkcja niestandardowa w arkuszu kalkulacyjnym | Anonimowy użytkownik; jednak limity są zliczane na koncie użytkownika przy klawiaturze. |
| aplikacja internetowa lub gadżet Witryn Google. | Użytkownik przy klawiaturze lub właściciel skryptu, w zależności od wybranych opcji podczas wdrażania aplikacji |
| Aktywator instalacyjny | Użytkownik, który utworzył wyzwalacz |
Przyznawanie uprawnień dostępu
Apps Script automatycznie określa zakresy autoryzacji (np. dostęp do plików Arkuszy lub Gmaila) na podstawie skanowania kodu. Kod zakomentowany nadal może generować prośbę o autoryzację. Jeśli skrypt wymaga autoryzacji, podczas jego uruchamiania wyświetli się okno autoryzacji.
Skrypty, na które wcześniej zezwolono, również proszą o dodatkowe zezwolenie, jeśli zmiana kodu dodaje nowe usługi. Skrypty nie mogą prosić o autoryzację, jeśli uzyskujesz do nich dostęp jako do aplikacji internetowej, która działa w tożsamości użytkownika właściciela skryptu.
Unieważnianie uprawnień dostępu
Aby cofnąć dostęp skryptu do Twoich danych:
- Otwórz sekcję zabezpieczeń na swoim koncie Google.
- W sekcji Twoje połączenia z aplikacjami i usługami innych firm kliknij Zobacz wszystkie połączenia.
- Wybierz skrypt lub aplikację, w przypadku których chcesz cofnąć dostęp.
- Kliknij Usuń wszystkie połączenia z aplikacją APP_NAME, a następnie Potwierdź.
Ogranicz zakres do bieżącego dokumentu
Jeśli tworzysz dodatek lub inny skrypt, który korzysta z usługi Arkusze, usługi Dokumenty, usługi Prezentacje lub usługi Formularze, możesz wymusić, aby okno autoryzacji prosiło tylko o dostęp do plików, w których używany jest dodatek lub skrypt, a nie do wszystkich arkuszy kalkulacyjnych, dokumentów lub formularzy użytkownika. Aby to zrobić, w komentarzu na poziomie pliku umieść tę adnotację JSDoc:
/**
* @OnlyCurrentDoc
*/
Adnotacja przeciwna @NotOnlyCurrentDoc jest dostępna, jeśli skrypt zawiera bibliotekę, która deklaruje @OnlyCurrentDoc, ale skrypt główny wymaga dostępu do więcej niż tylko bieżącego pliku.
Cykl życia autoryzacji w przypadku dodatków
Dodatki do Arkuszy, Dokumentów, Prezentacji i Formularzy
zwykle korzystają z tego samego modelu autoryzacji co skrypty powiązane z dokumentem. W określonych okolicznościach funkcje onOpen(e) i onEdit(e) działają w trybie bez autoryzacji, co wiąże się z dodatkowymi komplikacjami. Więcej informacji znajdziesz w przewodniku po cyklu życia autoryzacji dodatków.
Limity użytkowników aplikacji OAuth
Aplikacje, które używają protokołu OAuth do uzyskiwania dostępu do danych użytkowników Google, w tym projekty Apps Script, podlegają limitom autoryzacji. Więcej informacji znajdziesz w artykule Limity użytkowników aplikacji OAuth.
Sposób ponownego uwierzytelniania w Apps Script
Apps Script nie wymusza częstotliwości ponownego uwierzytelniania skonfigurowanej w ustawieniach usługi Google Cloud. Dzieje się tak, ponieważ Apps Script może działać automatycznie przy użyciu wyzwalaczy, które działają bez bezpośredniej interakcji użytkownika. Te automatyczne wykonania nie powodują wyświetlania monitów o ponowne uwierzytelnienie. Aplikacja Apps Script nie prosi automatycznie o ponowne uwierzytelnienie po upływie określonego czasu (np. 12 godzin).
Ustawianie w pliku manifestu jawnych zakresów
Apps Script automatycznie określa wymagane zakresy, skanując kod pod kątem wywołań funkcji. Jeśli potrzebujesz większej kontroli, możesz jawnie ustawić zakresy w pliku manifestu projektu (appsscript.json). Jest to zalecane w przypadku opublikowanych skryptów, aby mieć pewność, że używasz minimalnych wymaganych uprawnień.
Instrukcje znajdziesz w artykule Ustawianie jawnych zakresów.
Rozwiązywanie problemów
- Błąd „Wymagana autoryzacja” podczas uruchamiania aktywatora: aktywatory muszą być autoryzowane przez użytkownika, który je utworzył. Jeśli dodasz kod, który wymaga nowych uprawnień, musisz ręcznie uruchomić funkcję w edytorze skryptów, aby wywołać okno autoryzacji.
- Zakresy nie są aktualizowane: jeśli po zaktualizowaniu kodu okno autoryzacji nie odzwierciedla zmian, spróbuj zapisać projekt i odświeżyć edytor. Jeśli w pliku manifestu używasz jawnych zakresów, upewnij się, że nowy zakres został dodany do tablicy
oauthScopes. - „Ta aplikacja jest zablokowana” lub ostrzeżenie o niezweryfikowanej aplikacji: pojawia się, gdy skrypt używa zakresów wrażliwych lub z ograniczeniami i nie został zweryfikowany przez Google. Zobacz Weryfikacja klienta OAuth.