Các dự án Google Apps Script được liên kết với Google Tài liệu, Google Trang tính hoặc Google Biểu mẫu có thể hiển thị các phần tử giao diện người dùng, chẳng hạn như cảnh báo, lời nhắc, thông báo dạng toast, hộp thoại và thanh bên được tạo sẵn. Các phần tử này thường chứa nội dung dịch vụ HTML tuỳ chỉnh và thường được mở từ mục trong trình đơn. Trong Biểu mẫu, các phần tử giao diện người dùng chỉ hiển thị cho người chỉnh sửa mở biểu mẫu để sửa đổi, chứ không hiển thị cho người trả lời.
Hộp thoại cảnh báo

Cảnh báo là một hộp thoại được tạo sẵn, mở ra bên trong trình chỉnh sửa Tài liệu, Trang tính, Trang trình bày hoặc Biểu mẫu. Hộp thoại này hiển thị một thông báo và nút OK; tiêu đề và các nút thay thế là không bắt buộc. Thao tác này tương tự như việc gọi window.alert trong JavaScript phía máy khách trong trình duyệt web.
Cảnh báo sẽ tạm dừng tập lệnh phía máy chủ trong khi hộp thoại đang mở. Tập lệnh sẽ tiếp tục sau khi người dùng đóng hộp thoại, nhưng các kết nối JDBC sẽ không duy trì trong quá trình tạm ngưng.
Như trong ví dụ sau, Tài liệu, Biểu mẫu, Trang trình bày và Trang tính đều sử dụng phương thức Ui.alert. Phương thức này có 3 biến thể. Để ghi đè nút OK mặc định, hãy truyền một giá trị từ enum Ui.ButtonSet làm đối số buttons. Để đánh giá nút mà người dùng đã nhấp vào, hãy so sánh giá trị trả về cho alert với enum 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.");
}
}
Hộp thoại lời nhắc

Lời nhắc là một hộp thoại được tạo sẵn, mở ra bên trong trình chỉnh sửa Tài liệu, Trang tính, Trang trình bày hoặc Biểu mẫu. Thẻ này hiển thị một thông báo, một trường nhập dữ liệu văn bản và một nút OK; tiêu đề và các nút thay thế là không bắt buộc. Thao tác này tương tự như việc gọi window.prompt trong JavaScript phía máy khách trong trình duyệt web.
Lệnh này sẽ tạm dừng tập lệnh phía máy chủ trong khi hộp thoại đang mở. Tập lệnh sẽ tiếp tục sau khi người dùng đóng hộp thoại, nhưng các kết nối JDBC sẽ không duy trì trong quá trình tạm ngưng.
Như trong ví dụ sau, Tài liệu, Biểu mẫu, Trang trình bày và Trang tính đều sử dụng phương thức Ui.prompt. Phương thức này có 3 biến thể. Để ghi đè nút OK mặc định, hãy truyền một giá trị từ enum Ui.ButtonSet làm đối số buttons. Để đánh giá phản hồi của người dùng, hãy ghi lại giá trị trả về cho prompt, sau đó gọi PromptResponse.getResponseText để truy xuất dữ liệu đầu vào của người dùng và so sánh giá trị trả về cho PromptResponse.getSelectedButton với enum 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.");
}
}
Thông báo ngắn trên bảng tính
"Thông báo dạng cửa sổ" là một cửa sổ hộp thoại nhỏ ở góc dưới bên phải của trình chỉnh sửa Trang tính, hiển thị một thông báo nhưng không tạm dừng tập lệnh. Đây là một cách hay để hiển thị thông báo trạng thái hoặc thông tin cập nhật không yêu cầu người dùng tương tác.
Như minh hoạ trong ví dụ sau, Trang tính sử dụng phương thức Spreadsheet.toast.
Thông báo chỉ có trong Trang tính.
function showToast() {
SpreadsheetApp.getActiveSpreadsheet().toast("Task completed successfully.");
}
Hộp thoại tuỳ chỉnh

Hộp thoại tuỳ chỉnh có thể hiển thị giao diện người dùng dịch vụ HTML bên trong trình chỉnh sửa Tài liệu, Trang tính, Trang trình bày hoặc Biểu mẫu.
Hộp thoại tuỳ chỉnh không tạm ngưng tập lệnh phía máy chủ trong khi hộp thoại đang mở.
Vì các hàm này không đồng bộ, nên hàm phía máy chủ mở hộp thoại sẽ hoàn tất ngay lập tức. Để truyền dữ liệu từ hộp thoại tuỳ chỉnh trở lại máy chủ, hãy sử dụng API google.script trong mã phía máy khách.
Hộp thoại có thể tự đóng bằng cách gọi google.script.host.close ở phía máy khách của giao diện dịch vụ HTML. Các giao diện khác không thể đóng hộp thoại này, chỉ người dùng hoặc chính hộp thoại mới có thể đóng.
Như trong ví dụ sau, Tài liệu, Biểu mẫu, Trang trình bày và Trang tính đều sử dụng phương thức Ui.showModalDialog để mở hộp thoại.
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()" />
Thanh bên tuỳ chỉnh

Thanh bên có thể hiển thị giao diện người dùng dịch vụ HTML bên trong trình chỉnh sửa Tài liệu, Biểu mẫu, Trang trình bày và Trang tính.
Thanh bên không tạm ngưng tập lệnh phía máy chủ trong khi hộp thoại đang mở. Thành phần phía máy khách có thể thực hiện các lệnh gọi không đồng bộ đến tập lệnh phía máy chủ bằng cách sử dụng API google.script cho các giao diện dịch vụ HTML.
Thanh bên có thể tự đóng bằng cách gọi google.script.host.close ở phía máy khách của giao diện dịch vụ HTML. Các giao diện khác không thể đóng thanh bên, chỉ người dùng hoặc chính thanh bên mới có thể đóng.
Như trong ví dụ sau, Tài liệu, Biểu mẫu, Trang trình bày và Trang tính đều sử dụng phương thức Ui.showSidebar để mở thanh bên.
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()" />
Hộp thoại mở tệp
Google Picker là một API JavaScript cho phép người dùng chọn hoặc tải tệp lên Google Drive. Sử dụng thư viện Google Picker trong dịch vụ HTML để tạo một hộp thoại tuỳ chỉnh cho phép người dùng chọn các tệp hiện có hoặc tải tệp mới lên, sau đó chuyển lựa chọn trở lại tập lệnh của bạn.
Yêu cầu
Việc sử dụng Google Picker với Google Apps Script có một số yêu cầu:
Thiết lập môi trường cho Google Picker.
Dự án tập lệnh của bạn phải sử dụng một dự án tiêu chuẩn trên Google Cloud.
Truyền cùng một số dự án trên đám mây đến
PickerBuilder.setAppIdnếu sử dụng phạm vidrive.file.Tệp kê khai dự án Apps Script phải chỉ định các phạm vi uỷ quyền mà Google Picker API yêu cầu để
ScriptApp.getOAuthTokentrả về mã thông báo chính xác choPickerBuilder.setOauthtoken.Hạn chế khoá API được đặt trong
PickerBuilder.setDeveloperKeyđối với Apps Script. Trong mục Application restrictions (Hạn chế cho ứng dụng), hãy làm theo các bước sau:- Chọn Liên kết giới thiệu HTTP (trang web).
- Trong phần Hạn chế về trang web, hãy nhấp vào Thêm một mục.
- Nhấp vào Người giới thiệu rồi nhập
*.google.com. - Thêm một mục khác và nhập
*.googleusercontent.comlàm giá trị giới thiệu. - Nhấp vào Xong.
Ví dụ:
Ví dụ sau đây cho thấy Google Picker trong Apps Script.