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 nổi, 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ừ các 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. Hộp thoại này tương tự như việc gọi
window.alert
trong JavaScript phía máy khách bên trong trình duyệt web.
Cảnh báo 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 JDBC không duy trì được trong thời gian tạm dừng.
Như minh hoạ 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, có
3 biến thể. Để ghi đè nút OK mặc định, hãy truyền một giá trị từ
Ui.ButtonSet enum 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. Hộp thoại 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à nút OK ; tiêu đề và các nút thay thế là không bắt buộc. Hộp thoại này tương tự như việc gọi
window.prompt
trong JavaScript phía máy khách bên trong trình duyệt web.
Lời nhắc 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 JDBC không duy trì được trong thời gian tạm dừng.
Như minh hoạ 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, 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 thu thập 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 dạng nổi trên Trang tính
"Thông báo dạng nổi" 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 dạng nổi 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 dừng tập lệnh phía máy chủ trong khi hộp thoại đang mở.
Vì là 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, chỉ có người dùng hoặc chính hộp thoại đó mới có thể đóng.
Như minh hoạ 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 dừ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 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ỉ có người dùng hoặc chính thanh bên đó mới có thể đóng.
Như minh hoạ 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 trên Google Drive lên. 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 đó truyề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 trên đám mây tiêu chuẩn của Google Cloud.
Truyền cùng một số dự án trên đám mây cho
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.setDeveloperKeycho Apps Script. Trong phần Application restrictions (Hạn chế ứng dụng), hãy làm theo các bước sau:- Chọn HTTP referrers (web sites) (Liên kết giới thiệu HTTP (trang web)).
- Trong phần Website restrictions (Hạn chế về trang web), hãy nhấp vào Add an item (Thêm một mục).
- Nhấp vào Referrer (Liên kết giới thiệu) rồi nhập
*.google.com. - Thêm một mục khác và nhập
*.googleusercontent.comlàm liên kết giới thiệu. - Nhấp vào Done (Xong).
Ví dụ:
Ví dụ sau đây minh hoạ Google Picker trong Apps Script.