Chương 3 Tình huống thực tế: chỉnh lại bảng doanh thu tháng ・ SỨ MỆNH 12

Nhiệm vụ 12: Chạy từ menu riêng (onOpen)

📋 Danh sách nhiệm vụ

Đề bài

Làm sao để khi mở bảng tính có menu “Xử lý cuối tháng” và mục “Đánh dấu đơn lớn” chạy markLarge. Lưu xong, tải lại trình duyệt (F5) rồi chạy từ menu.

Doanh thu tháng 10 - Google Trang tính
Doanh thu tháng 10

Để luyện tập, mỗi lần chạy bảng sẽ quay về trạng thái ban đầu trước khi chạy (bảng tính thật không quay về. Thay đổi do script đôi khi hoàn tác được bằng Ctrl+Z, nhưng không thể hoàn tác tất cả một lần).

Apps ScriptDự án không có tiêu đềTriển khai ▾
function onOpen() {
SpreadsheetApp.getUi()
.('Xử lý cuối tháng')
.addItem('Đánh dấu đơn lớn', '')
.();
}
function markLarge() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const amounts = sheet.getRange(2, 4, lastRow - 1, 1).getValues();
const labels = amounts.map((row) => [row[0] >= 100000 ? 'Lớn' : '']);
sheet.getRange(2, 5, labels.length, 1).setValues(labels);
}
Ctrl+S: lưu · Ctrl+R: chạy (trình chỉnh sửa) · F5: mở lại

Chương 3 ・ SỨ MỆNH 12

Chạy từ menu riêng (onOpen)

Làm sao để khi mở bảng tính có menu “Xử lý cuối tháng” và mục “Đánh dấu đơn lớn” chạy markLarge. Lưu xong, tải lại trình duyệt (F5) rồi chạy từ menu.

bây giờ
Mục tiêu (chạy từ menu “Xử lý cuối tháng”)

Cách đọc mã

function onOpen() {
Hàm tự chạy khi mở bảng tính. Đổi tên thì sẽ không chạy.
SpreadsheetApp.getUi().createMenu('Xử lý cuối tháng')
Tạo menu tên “Xử lý cuối tháng” trên màn hình (Ui).
.addItem('Đánh dấu đơn lớn', 'markLarge')
Thêm một mục. Bấm vào sẽ chạy hàm tên markLarge.
.addToUi();
Hiện menu đã tạo lên thanh menu.

Hàm tên onOpen tự chạy khi mở bảng tính. Nếu thêm menu ở đây, cả người chưa từng mở Apps Script cũng chạy được việc từ menu. Phù hợp với bảng tính cả nhóm cùng dùng.

Cách bắt đầu với GAS và mã hay dùng được tổng hợp trong một bài viết.GAS là gì? Cách bắt đầu và mã hay dùng

Mã bạn viết chạy trong một vùng cách ly bên trong trang này. Nó không ra được ngoài trang hay tới trang web khác.

* Đây là mô phỏng hoạt động của Google Trang tính và Apps Script, có thể khác bản thật ở một số điểm.

* Google Trang tính là nhãn hiệu của Google LLC. Trang web này không liên quan đến Google.