1 Google Sheets Apps Script
Có khá nhiều cách để thực thi tập lệnh, và tùy theo mục đích sử dụng như:
_ Chọn hàm (function) và ấn Chạy (Run) trực tiếp trong môi trường Apps Script
_ Gán tên hàm vào ảnh hoặc bản vẽ được chèn vào Google Sheets để tạo một nốt ấn thực thi lệnh
_ Tạo trình kích hoạt tự động (Triggers)
_ Tạo menu tùy chỉnh (Custom Menus)
Trong bài viết này mình sẽ giới thiệu với mọi người phương pháp tạo Menu tùy chỉnh (Custom Menus) để thực thi lệnh qua việc click chọn trên thanh menu Google Sheets
Sử dụng phương thức createMenu trong đối tượng SpreadsheetApp.getUi()
SpreadsheetApp.getUi() là một đối tượng cho phép bạn tương tác với giao diện người dùng GoogleSheets qua AppScript
Các phương thức sử dụng
Phương thức | Mô tả |
createMenu('nameMenu') | Tạo một mục menu |
addItem('nameItem', 'nameFunction') | Tạo một mục chạy tệp lệnh |
addSeparator() | Tạo một dòng phân cách các mục trong menu |
addSubMenu(menu) | Thêm một mục menu thứ cấp |
addToUi() | Thực hiện chèn menu đã tạo vào Google Sheets |
createMenu('nameMenu')
addItem('nameItem', 'nameFunction')
addSubMenu(menu)
Tham số | Định dạng | Mô tả |
nameMenu | Chuỗi ký tự | Tên menu bạn muốn đặt |
Tham số | Định dạng | Mô tả |
nameItem | Chuỗi ký tự | Tên mục bạn muốn đặt |
nameFunction | Chuỗi ký tự | Tên hàm thực thi khi chọn vào mục |
Tham số | Định dạng | Mô tả |
menu | Đối tượng | Xây dựng tương tự menu chính |
Xây dựng tập lệnh
/*Hàm tạo menu tùy chỉnh - theza2.blogspot.com*/
function makeMenu() {
var ui=SpreadsheetApp.getUi(); //Khởi tạo môi trường Ui
ui.createMenu("Tên menu chính") //Tạo menu chính
.addItem('Tên chức năng 1', 'tenFunction1') //Thêm mục chức năng vào menu chính(mục 'Tên chức năng 1' ấn vào sẽ chạy tập lệnh 'tenFunction1')
.addItem('Tên chức năng 2', 'tenFunction2') //Thêm mục chức năng vào menu chính (mục 'Tên chức năng 2' ấn vào sẽ chạy tập lệnh 'tenFunction2')
.addSeparator() //Thêm dòng phân cách các mục trong menu
.addSubMenu(ui.createMenu("Tên menu thứ cấp A") //Thêm một mục menu thứ cấp A vào menu chính
.addItem('Tên chức năng A.1', 'tenFunctionA1') //Thêm mục chức năng A.1 vào menu A
.addItem('Tên chức năng A.2', 'tenFunctionA2') //Thêm mục chức năng A.2 vào menu A
) //Kết thúc việc tạo menu A
.addSubMenu(ui.createMenu("Tên menu thứ cấp B") //Thêm một mục menu thứ cấp B vào menu chính
.addItem('Tên chức năng B.1', 'tenFunctionB1') //Thêm mục chức năng B.1 vào menu B
.addSubMenu(ui.createMenu("Tên menu thứ cấp B-B") //Thêm một mục menu thứ cấp B-B vào menu B
.addItem('Tên chức năng B-B.1', 'tenFunctionBB1') //Thêm mục chức năng B-B.1 vào menu B-B
.addItem('Tên chức năng B-B.2', 'tenFunctionBB2') //Thêm mục chức năng B-B.2 vào menu B-B
) //Kết thúc việc tạo menu B-B
.addItem('Tên chức năng B.2', 'tenFunctionB2') //Thêm mục chức năng B.2 vào menu B
) //Kết thúc việc tạo menu B
.addToUi(); //Thêm menu vừa tạo bên trên vào thanh menu GoogleSheets
} //Kết thúc việc tạo menu tùy chỉnh
/*Đưa tập lệnh tạo menu vào hàm onOpen để menu được tạo khi mở file GoogleSheets*/
function onOpen() {
makeMenu();
}
/*Các tập lệnh chức năng*/
function tenFunction1() {Browser.msgBox('Bạn đã thực hiện tập lệnh 1');}
function tenFunction2() {Browser.msgBox('Bạn đã thực hiện tập lệnh 2');}
function tenFunctionA1() {Browser.msgBox('Bạn đã thực hiện tập lệnh A.1');}
function tenFunctionA2() {Browser.msgBox('Bạn đã thực hiện tập lệnh A.2');}
function tenFunctionB1() {Browser.msgBox('Bạn đã thực hiện tập lệnh B.1');}
function tenFunctionB2() {Browser.msgBox('Bạn đã thực hiện tập lệnh B.2');}
function tenFunctionBB1() {Browser.msgBox('Bạn đã thực hiện tập lệnh B-B.1');}
function tenFunctionBB2() {Browser.msgBox('Bạn đã thực hiện tập lệnh B-B.2');}