Autoryzacja dla usług 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:

  1. Wykrywanie: Apps Script skanuje skrypt, aby określić, z których usług korzysta (np. SpreadsheetApp lub GmailApp).
  2. Określanie zakresu: na podstawie skanowania Apps Script identyfikuje zestaw zakresów OAuth potrzebnych do uruchomienia skryptu.
  3. Sprawdzanie autoryzacji: po uruchomieniu skryptu sprawdza on, czy użytkownik autoryzował już te zakresy.
  4. Prośba do użytkownika: jeśli brakuje autoryzacji, wyświetla się okno z prośbą o przyznanie uprawnień.
  5. 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:

  1. 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.
  2. 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)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.