Autoryzacja wielu aplikacji opartych na Apps Script jest prosta, ponieważ projekt skryptu prosi o brakujące uprawnienia, gdy ktoś próbuje aby z niej korzystać.
Model autoryzacji dla platformy Dodatki do edytora to są bardziej złożone z kilku powodów:
Gdy użytkownik utworzy plik, wszystkie dodatki, które on zainstaluje, są wymienione w menu Rozszerzenia, nawet jeśli użytkownik nie autoryzował jeszcze tych dodatków.
Te dodatki działają z plikami w Dysk Google, który można udostępniać współpracownikom. współpracowników, którzy tego nie robią; z zainstalowanym dodatkiem Edytor jest widoczny w dokumentach na którym twórca pliku go użył.
Dodatki do Edytora Google uruchamiają automatycznie dodatek
onOpen()
funkcje dostępne po otwarciu dokumentu.
Aby chronić dane użytkownika, stosowane są tryby autoryzacji, dzięki którym niektóre usługi
niedostępne w usłudze onOpen()
. Ten przewodnik pomoże Ci zrozumieć kod
co i kiedy może zrobić.
Model autoryzacji
Tryb autoryzacji dodatku edytora zależy od jego stan zależnie od tego, kto go używa: użytkownik, który zainstalował dodatek. lub współpracownika.
Stany dodatku edytora
Dodatki edytora w menu Rozszerzenia to zainstalowana, włączona lub jedno i drugie.
- Dodatek jest zainstalowany na danym urządzeniu. użytkownika po pobraniu go z Google Workspace Marketplace i autoryzowanie dostępu tej usługi do danych Google,
- Dodatek jest włączony w dokumencie, formularzu prezentację lub arkusz kalkulacyjny, jeśli ktoś z nich korzysta.
- Gdy ktoś współpracuje nad plikiem, a jedna z nich używa jest zainstalowany dla danego użytkownika. enabled.
W tabeli poniżej zebraliśmy różnice między zainstalowanymi i włączonymi. Pamiętaj, że gdy przetestowanie skryptu jako dodatku można przeprowadzić test w jednym lub w obu z tych stanów.
Zainstalowano | Włączono | |
---|---|---|
Dotyczy: | Użytkownik | Dokument, formularz, prezentacja lub arkusz kalkulacyjny |
Powód | Pobieranie dodatku ze sklepu | Pobieranie dodatku ze sklepu podczas używania
ten dokument, formularz, prezentację lub arkusz kalkulacyjny korzystanie z wcześniej zainstalowanego dodatku, dokument, formularz, prezentacja lub arkusz kalkulacyjny |
Menu widoczne dla | Tylko ten użytkownik we wszystkich dokumentach, formularzach, prezentacjach czy arkuszy kalkulacyjnych, które otwierają lub tworzą | wszystkich współpracowników nad tym dokumentem, formularzem, prezentacją lub arkusz kalkulacyjny |
Tryb autoryzacji instancji onOpen() |
( AuthMode.NONE )
(chyba że jest również włączona. W takim przypadku
AuthMode.LIMITED) |
AuthMode.LIMITED |
Tryby autoryzacji
Uruchomienie funkcji onOpen()
w dodatku do edytora
automatycznie, gdy użytkownik otworzy dokument, formularz, prezentację lub arkusz kalkulacyjny.
Aby chronić użytkowników Apps Script ogranicza
Funkcja onOpen()
może wykonać zadania. Stan dodatku Edytor
określa tryb autoryzacji, w którym działa funkcja onOpen()
.
Jeśli dodatek do Edytora jest włączony w pliku,
formularz, prezentacja lub arkusz kalkulacyjny, onOpen()
działa w
AuthMode.LIMITED
Jeśli dodatek nie jest włączony i jest
Tylko zainstalowane, onOpen()
działa w AuthMode.NONE
.
W domenie AuthMode.NONE
dodatek nie może uruchamiać określonych
dopóki użytkownik nie wejdzie w interakcję z tym dodatkiem,
po kliknięciu lub uruchomieniu funkcji niestandardowych. Jeśli
dodatek próbuje korzystać z tych usług w aplikacji onOpen()
,
onInstall()
lub zakresu globalnego, brak uprawnień i inne wywołania, takie jak
uzupełnianie menu, zatrzymaj Jedyną obsługiwaną opcją jest Pomoc.
Aby uruchomić ograniczone wywołania usługi, musisz użyć autoryzacji AuthMode.FULL
i trybu uzyskiwania zgody. funkcje interakcji użytkownika, takie jak kliknięcie opcji menu,
które działają tylko w tym trybie. Po uruchomieniu kodu w trybie AuthMode.FULL
parametr
dodatek może używać wszystkich zakresów autoryzowanych przez użytkownika.
Apps Script przechodzi przez tryb autoryzacji
jako właściwość authMode
skryptu Apps Script,
parametr zdarzenia, e
; wartość
e.authMode
odpowiada stałej w Apps Script.
Wyliczenie ScriptApp.AuthMode
.
Tryby autoryzacji dotyczą wszystkich metod wykonywania Apps Script,
Może to być na przykład uruchomienie w edytorze skryptów, z menu lub z Apps Script
google.script.run
. Pamiętaj jednak:
właściwość e.authMode
można sprawdzić tylko wtedy, gdy w wyniku działania skryptu zostanie uruchomiony
reguły, np. onOpen()
, onEdit()
lub onInstall()
. Funkcje niestandardowe
w Arkuszach Google używają własnego trybu autoryzacji AuthMode.CUSTOM_FUNCTION
,
który jest podobny do LIMITED
, ale ma nieco inne ograniczenia. Dla każdego
w innych przypadkach skrypty uruchamiane w interfejsie AuthMode.FULL
w sposób opisany poniżej
tabeli.
NONE |
LIMITED |
CUSTOM_FUNCTION |
FULL |
|
---|---|---|---|---|
Występuje przez | onOpen() (jeśli użytkownik zainstalował
ale nie włączono go w dokumencie, formularzu
prezentacji lub arkusza kalkulacyjnego) |
onOpen() (we wszystkich innych godzinach)onEdit() (tylko w Arkuszach) |
Funkcje niestandardowe | Wszystkie inne godziny, w tym: reguły, które można zainstalować onInstall() google.script.run |
Dostęp do danych użytkownika | Tylko język | Tylko język | Tylko język | Tak |
Dostęp do dokumentu, formularza, prezentacji lub arkusza kalkulacyjnego | Nie | Tak | Tak, tylko do odczytu | Tak |
Dostęp do interfejsu | Dodawanie pozycji menu | Dodawanie pozycji menu | Nie | Tak |
Dostęp do usługi Properties |
Nie | Tak | Tak | Tak |
Dostęp do usług Jdbc , UrlFetch |
Nie | Nie | Tak | Tak |
Inne usługi | Logger Utilities |
Usługi, które nie mają dostępu do danych użytkowników | Usługi, które nie mają dostępu do danych użytkowników | Wszystkie usługi |
Cykl autoryzacji dodatku do Edytora
Gdy dodatek jest zainstalowany dla bieżącego użytkownika
lub włączone w bieżącym pliku,
wczytanie dodatku dla dokumentu, formularza, prezentacji
lub arkusz kalkulacyjny po otwarciu. Dodatek to
w menu Rozszerzenia i rozpoczyna nasłuchiwanie
proste reguły onInstall()
,
onOpen()
i onEdit()
. Jeśli użytkownik kliknie
Rozszerzenia w menu, uruchamia się.
Dodatek Edytor jest zainstalowany
Gdy dodatek do Edytora zostanie zainstalowany ze sklepu,
Funkcja onInstall()
działa w AuthMode.FULL
. W tym trybie autoryzacji
może uruchomić złożoną rutynę konfiguracyjną. Wykonaj też
użyj onInstall()
do utworzenia pozycji menu, ponieważ dokument, formularz, prezentacja
lub arkusz kalkulacyjny jest już otwarty, a funkcja onOpen()
nie została uruchomiona.
Z przykładu poniżej dowiesz się, jak wywołać funkcję onOpen()
z funkcji onInstall()
:
function onInstall(e) {
onOpen(e);
// Perform additional setup as needed.
}
Dodatek Edytor jest otwarty
Po otwarciu dokumentu, formularza, prezentacji lub arkusza kalkulacyjnego jest on ładowany co
dodatek Edytor, który zainstalował bieżący użytkownik, lub
włączone przez wszystkich współpracowników w pliku, a także połączenia
każdej z ich funkcji onOpen()
. Tryb autoryzacji onOpen()
jest uruchamiane w zależności od tego, czy dodatek jest
zainstalowana lub włączona.
Jeśli dodatek utworzy tylko menu podstawowe, tryb
bez znaczenia. Poniższy przykład przedstawia podstawową funkcję onOpen()
:
function onOpen(e) {
SpreadsheetApp.getUi().createAddonMenu() // Or DocumentApp.
.addItem('Insert chart', 'insertChart')
.addItem('Update charts', 'updateCharts')
.addToUi();
}
Aby dodać dynamiczne pozycje menu na podstawie zapisanych skryptów Apps Script właściwości, by odczytywać zawartość pakietów lub wykonać inne zaawansowane zadania, musi identyfikować tryb autoryzacji i prawidłowo go obsługiwać.
Poniższy przykład przedstawia zaawansowaną funkcję onOpen()
, która zmienia swoją
działanie w zależności od trybu autoryzacji:
function onOpen(e) {
var menu = SpreadsheetApp.getUi().createAddonMenu(); // Or DocumentApp.
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
// Add a normal menu item (works in all authorization modes).
menu.addItem('Start workflow', 'startWorkflow');
} else {
// Add a menu item based on properties (doesn't work in AuthMode.NONE).
var properties = PropertiesService.getDocumentProperties();
var workflowStarted = properties.getProperty('workflowStarted');
if (workflowStarted) {
menu.addItem('Check workflow status', 'checkWorkflow');
} else {
menu.addItem('Start workflow', 'startWorkflow');
}
}
menu.addToUi();
}
Pamiętaj, że dodatki nie mogą otwierać pasków bocznych ani okien podczas uruchamiania w
AuthMode.LIMITED
Możesz użyć pozycji menu
aby otwierać paski boczne i okna, ponieważ są one uruchamiane w aplikacji AuthMode.FULL
.
Użytkownik uruchamia dodatek do Edytora
Gdy użytkownik kliknie pozycję w menu Rozszerzenia,
Apps Script najpierw sprawdza, czy użytkownik zainstalował
oraz
zachęca ich do tego,
jeśli tak nie jest. Jeśli użytkownik autoryzował
skrypt uruchamia funkcję, która
odpowiada pozycji menu w AuthMode.FULL
.
dodatek jest włączony w dokumencie, formularzu
prezentację lub arkusz kalkulacyjny, jeśli jeszcze go nie ma.
Rozwiązywanie problemów z nierenderowaniem menu dodatków
Menu dodatku może się nie renderować, jeśli Twój kod nie zarządza poprawnie trybami autoryzacji. Na przykład:
Dodatek próbuje uruchomić Apps Script usługa, która nie jest obsługiwana w bieżącym trybie autoryzacji.
Dodatek próbuje uruchomić wywołanie usługi, zanim użytkownik wchodzić z nią w interakcję.
Aby usunąć lub zmienić kolejność wywołań usługi, które powodują błędy uprawnień w
AuthMode.NONE
, spróbuj wykonać te czynności:
- Otwórz projekt Apps Script powiązany z Twoim dodatkiem i zlokalizuj go
funkcję
onOpen()
. - Wyszukaj w funkcji
onOpen()
wzmianki o Apps Script związane z nimi usługi lub obiekty,PropertiesService
,SpreadsheetApp
lubGmailApp
. - Jeśli usługa jest używana nie tylko do tworzenia elementów interfejsu,
usunąć lub umieścić w bloku komentarzy.
Zostaw tylko te metody:
.getUi()
,.createMenu()
,.addItem()
, i.addToUi()
. Znajdź i usuń wszelkie usługi, które są poza funkcją. - Określ funkcje, które mogą zawierać skomentowane lub usunięte wiersze kodu zwłaszcza tym osobom, które wykorzystują uzyskane informacje, i przenosić wywołania usługi do funkcji, które ich potrzebują. Zmiana kolejności lub redagowania w bazie kodu, by uwzględnić zmiany wprowadzone w poprzednich krokach.
Zapisz kod i utwórz wdrożenie testowe.
Podczas tworzenia wdrożenia testowego upewnij się, że pole Konfiguracja Zainstalowano dla bieżącego użytkownika, a tekst pod polem konfiguracji brzmi: Przetestuj w:
AuthMode.None
Uruchom wdrożenie testowe i otwórz menu Rozszerzenia.
Jeśli wyświetlają się wszystkie pozycje menu, problem został rozwiązany. Jeśli widzisz tylko menu Pomoc, wróć do kroku 1. Możliwe, że nie odebrałeś połączenia z zespołem pomocy.