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 lub powiązany z Dokumentami, Arkuszami, Prezentacjami lub Formularzami | 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 Google lub Gmaila) na podstawie skanowania kodu. Kod, który jest zakomentowany, nadal może generować prośbę o autoryzację. Jeśli skrypt wymaga autoryzacji, podczas jego uruchamiania zobaczysz jeden z dialogów autoryzacji pokazanych tutaj.
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 stronę uprawnień na koncie Google. (Aby w przyszłości przejść na tę stronę, wejdź na Google.com, a potem kliknij swoje zdjęcie profilowe w prawym górnym rogu ekranu. Następnie kliknij Moje konto, a potem w sekcji „Logowanie i bezpieczeństwo” kliknij Połączone aplikacje i witryny, a następnie Zarządzaj aplikacjami.
- Kliknij nazwę skryptu, którego autoryzację chcesz cofnąć, a następnie po prawej stronie kliknij Usuń i w wyświetlonym oknie kliknij OK.
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ć, umieść w komentarzu na poziomie pliku tę adnotację JsDoc:
/**
* @OnlyCurrentDoc
*/
Adnotacja przeciwna, @NotOnlyCurrentDoc, jest dostępna, jeśli skrypt zawiera bibliotekę, która deklaruje @OnlyCurrentDoc, ale główny skrypt 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 Google 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ług 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 będzie automatycznie prosić 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.