Projekty Google Apps Script powiązane z Dokumentami Google, Arkuszami Google lub Formularzami Google mogą wyświetlać elementy interfejsu użytkownika, takie jak gotowe alerty, prompty, powiadomienia, okna dialogowe i panele boczne. Elementy te zwykle zawierają niestandardową treść usługi HTML i są często otwierane z pozycji menu. W Formularzach elementy interfejsu użytkownika są widoczne tylko dla edytora, który otwiera formularz, aby go zmodyfikować, a nie dla osoby odpowiadającej.
Okna alertów

Alert to gotowe okno dialogowe, które otwiera się w edytorze Dokumentów, Arkuszy, Prezentacji lub Formularzy. Wyświetla komunikat i przycisk OK. Tytuł i alternatywne przyciski są opcjonalne. Jest to podobne do wywołania
window.alert
w JavaScript po stronie klienta w przeglądarce.
Alerty wstrzymują skrypt po stronie serwera, gdy okno dialogowe jest otwarte. Skrypt zostanie wznowiony po zamknięciu okna dialogowego przez użytkownika, ale połączenia JDBC nie będą utrzymywane podczas wstrzymania.
Jak pokazano w przykładzie poniżej, Dokumenty, Formularze, Prezentacje i Arkusze korzystają z metody Ui.alert, która jest dostępna w 3 wariantach. Aby zastąpić domyślny przycisk OK, przekaż wartość z wyliczenia Ui.ButtonSet jako argument buttons. Aby sprawdzić, który przycisk kliknął użytkownik, porównaj wartość zwracaną dla alert z wyliczeniem Ui.Button.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show alert", "showAlert")
.addToUi();
}
function showAlert() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.alert(
"Please confirm",
"Are you sure you want to continue?",
ui.ButtonSet.YES_NO,
);
// Process the user's response.
if (result === ui.Button.YES) {
// User clicked "Yes".
ui.alert("Confirmation received.");
} else {
// User clicked "No" or X in the title bar.
ui.alert("Permission denied.");
}
}
Okna dialogowe promptów

Prompt to gotowe okno dialogowe, które otwiera się w edytorze Dokumentów, Arkuszy, Prezentacji lub Formularzy. Wyświetla komunikat, pole do wpisywania tekstu i przycisk OK. Tytuł i alternatywne przyciski są opcjonalne. Jest to podobne do wywołania
window.prompt
w JavaScript po stronie klienta w przeglądarce.
Gdy okno dialogowe jest otwarte, prompty wstrzymują skrypt po stronie serwera. Skrypt zostanie wznowiony po zamknięciu okna dialogowego przez użytkownika, ale połączenia JDBC nie będą utrzymywane podczas wstrzymania.
Jak pokazano w przykładzie poniżej, Dokumenty, Formularze, Prezentacje i Arkusze korzystają z metody Ui.prompt, która jest dostępna w 3 wariantach. Aby zastąpić domyślny przycisk OK, przekaż wartość z wyliczenia Ui.ButtonSet jako argument buttons. Aby ocenić odpowiedź użytkownika, przechwyć wartość zwracaną
dla prompt, a potem wywołaj
PromptResponse.getResponseText
, aby pobrać dane wejściowe użytkownika, i porównaj wartość zwracaną dla
PromptResponse.getSelectedButton
z wyliczeniem Ui.Button.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show prompt", "showPrompt")
.addToUi();
}
function showPrompt() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.prompt(
"Let's get to know each other!",
"Please enter your name:",
ui.ButtonSet.OK_CANCEL,
);
// Process the user's response.
const button = result.getSelectedButton();
const text = result.getResponseText();
if (button === ui.Button.OK) {
// User clicked "OK".
ui.alert("Your name is " + text + ".");
} else if (button === ui.Button.CANCEL) {
// User clicked "Cancel".
ui.alert("I didn't get your name.");
} else if (button === ui.Button.CLOSE) {
// User clicked X in the title bar.
ui.alert("You closed the dialog.");
}
}
Wyskakujące powiadomienia w arkuszach kalkulacyjnych
„Toast” to małe okno dialogowe w prawym dolnym rogu edytora Arkuszy, które wyświetla komunikat, ale nie wstrzymuje działania skryptu. To dobry sposób na wyświetlanie komunikatów o stanie lub aktualizacji, które nie wymagają interakcji użytkownika.
Jak widać w tym przykładzie, Arkusze używają metody Spreadsheet.toast.
Wyskakujące powiadomienia są dostępne tylko w Arkuszach.
function showToast() {
SpreadsheetApp.getActiveSpreadsheet().toast("Task completed successfully.");
}
Okna niestandardowe

Niestandardowe okno dialogowe może wyświetlać interfejs użytkownika usługi HTML w edytorze Dokumentów, Arkuszy, Prezentacji lub Formularzy.
Okna niestandardowe nie wstrzymują skryptu po stronie serwera, gdy są otwarte.
Ponieważ są asynchroniczne, funkcja po stronie serwera, która otwiera okno, kończy działanie natychmiast. Aby przekazać dane z niestandardowego okna do serwera, użyj w kodzie po stronie klienta interfejsu API google.script.
Okno dialogowe może się zamknąć samo, wywołując google.script.host.close po stronie klienta interfejsu usługi HTML. Okna nie można zamknąć za pomocą innych interfejsów, tylko przez użytkownika lub samo okno.
Jak pokazano w przykładzie poniżej, Dokumenty, Formularze, Prezentacje i Arkusze używają metody Ui.showModalDialog do otwierania okna.
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show dialog', 'showDialog') .addToUi(); } function showDialog() { const html = HtmlService.createHtmlOutputFromFile('Page') .setWidth(400) .setHeight(300); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showModalDialog(html, 'My custom dialog'); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
Niestandardowe paski boczne

Na pasku bocznym może być wyświetlany interfejs użytkownika usługi HTML w edytorze Dokumentów, Formularzy, Prezentacji i Arkuszy.
Paski boczne nie wstrzymują skryptu po stronie serwera, gdy okno dialogowe jest otwarte. Komponent po stronie klienta może wykonywać asynchroniczne wywołania skryptu po stronie serwera za pomocą interfejsu google.script API dla interfejsów usługi HTML.
Pasek boczny może się zamknąć samoczynnie, wywołując google.script.host.close po stronie klienta interfejsu usługi HTML. Paska bocznego nie można zamknąć za pomocą innych interfejsów, tylko przez użytkownika lub sam pasek.
Jak pokazano w poniższym przykładzie, Dokumenty, Formularze, Prezentacje i Arkusze używają metody Ui.showSidebar do otwierania paska bocznego.
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } function showSidebar() { const html = HtmlService.createHtmlOutputFromFile('Page') .setTitle('My custom sidebar'); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showSidebar(html); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
Okna otwierania plików
Google Picker to interfejs API JavaScript, który umożliwia użytkownikom wybieranie lub przesyłanie plików z Dysku Google. Użyj biblioteki Google Picker w usłudze HTML, aby utworzyć niestandardowe okno, które umożliwia użytkownikom wybieranie istniejących plików lub przesyłanie nowych, a następnie przekazywanie wyboru z powrotem do skryptu.
Wymagania
Korzystanie z selektora Google w Google Apps Script wiąże się z kilkoma wymaganiami:
Skonfiguruj środowisko dla selektora Google.
Projekt skryptu musi korzystać ze standardowego projektu Google Cloud.
Jeśli używasz zakresu
drive.file, przekaż ten sam numer projektu w chmurze doPickerBuilder.setAppId.Manifest projektu Apps Script musi określać zakresy autoryzacji wymagane przez interfejs Google Picker API, aby funkcja
ScriptApp.getOAuthTokenzwracała prawidłowy token dla funkcjiPickerBuilder.setOauthtoken.Ogranicz klucz interfejsu API ustawiony w
PickerBuilder.setDeveloperKeydo Apps Script. W sekcji Ograniczenia aplikacji wykonaj te czynności:- Wybierz Strony odsyłające HTTP (witryny internetowe).
- W sekcji Ograniczenia dostępu do stron kliknij Dodaj element.
- Kliknij Strona odsyłająca i wpisz
*.google.com. - Dodaj kolejny produkt i wpisz
*.googleusercontent.comjako adres odsyłający. - Kliknij Gotowe.
Zadzwoń pod numer
PickerBuilder.setOrigin.
Przykład
Poniższy przykład pokazuje selektor Google w Apps Script.