Apps Script - Một số lệnh thường dùng trong Google Sheets
Đã gửi: T4 08 Th12, 2021 09:19
Đầu tiên, chúng ta mở bảng tính cần thực hiện bằng Google Sheet, sau đó chọn lệnh Extensions > Apps Script
Một cửa số mới hiện ra, chúng ta xoá toàn bộ nội dung hiện có, và nhập toàn bộ mã lệnh dưới đây vào vùng soạn thảo mã lệnh trong tệp Code.gs
Cuối cùng nhấn nút Save. Như vậy chúng ta đã nạp xong phần mã lệnh vào bảng tính của mình.
Để các lệnh này hoạt động, chúng ta cần chọn hàm onOpen, sau nó nhấn lệnh Run. Việc tiếp theo là xác nhận các cấp phép cho mã lệnh vừa tạo.
Mọi người có thể điều chỉnh lại các lệnh sao cho phù hợp với yêu cầu của mình nhé
Giải thích từng lệnh
- Tạo bảng chọn chính có tiêu đề là "My Menu" (Lưu ý: Việc tạo bảng chọn chỉ áp dụng trong trường hợp mã lệnh được đính kèm bên trong bảng tính, điều này đồng nghĩa với việc chúng ta cần mở bảng tính bằng Google Sheets mới có thể chạy được các lệnh liên quan đến việc tạo các bảng chọn)
- Thêm lệnh con có tiêu đề là "Sub-Menu 1", khi chọn lệnh này sẽ thực thi hàm "MyFunction1"
- Tạo bảng tính mới với tên là "My Spreadsheet"
- Lấy mã bảng tính
- Lấy bảng tính có mã là giá trị của biến excel_id để xử lí
- Lấy bảng tính hiện đang mở để xử lí
- Lấy trang tính hiện đang mở để xử lí
- Đặt tên cho trang tính là "My Sheet"
- Xóa 8 cột, bắt đầu từ cột thứ 17
- Xóa 900 hàng, bắt đầu từ hàng thứ 100
- Đặt cho cột thứ 1 với độ rộng là 110px
- Đặt cho cột thứ 3 đến cột thứ 16 với độ rộng là 110px
- Đóng băng 2 cột đầu tiên
- Đóng băng 3 hàng đầu tiên
- Lấy khối A4:A100, sau đó đặt kiểm tra dữ liệu với tùy chọn như sau:
+ Không cho phép nhập sai
+ Yêu cầu nhập dữ liệu theo các giá trị sau với tùy chọn hiển thị bảng chọn: ACCEPTANCE, CHECKBOX, CHECKGRID, CHOICE, DATE, GRID, IMAGE1, IMAGE2, LIST, PAGE, PARAGRAPH, SCALE, SECTION, TEXT, TIME, VIDEO
+ Áp dụng các thiết lập
- Lấy khối khối A1:A100, sau đó định dạng như sau:
+ Đặt kiểu chữ in đậm
+ Căn giữa nội dung
- Lấy ô A1, sau đó đặt dữ liệu là EXERCISE
- Lấy khối E4:H100, sau đó đặt màu nền là #00ffff
- Lấy tất cả các trang tính để xử lí
- Lấy địa chỉ khối có chứa toàn bộ dữ liệu trong trang tính
- Lấy số lượng hàng trong khối
- Lấy số lượng cột trong khối
- Lấy vị trí hàng cuối cùng
- Lấy vị trí cột cuối cùng
- Lấy mảng dữ liệu từ khối
- Lấy khối bắt đầu từ ô tại tọa độ (giá trị của biến cr, 8), lấy đến 1 hàng và 10 cột tiếp theo
- Lấy màu nền của ô đầu tiên, trong khối bắt đầu từ ô tại tọa độ (giá trị của biến cr, giá trị của biến cu), lấy đến 1 hàng và 1 cột tiếp theo
Chi tiết tất cả các lệnh xem tại:
+ Các lệnh liên quan đến giao diện người dùng: https://developers.google.com/apps-scri ... ce/base/ui
+ Các lệnh chung liên quan đến bảng tính: https://developers.google.com/apps-scri ... dsheet-app
+ Các lệnh liên quan đến trang tính: https://developers.google.com/apps-scri ... heet/sheet
+ Các lệnh liên quan đến vùng chọn: https://developers.google.com/apps-scri ... heet/range
+ Các lệnh liên quan đến cài đặt kiểm tra dữ liệu: https://developers.google.com/apps-scri ... on-builder
Một cửa số mới hiện ra, chúng ta xoá toàn bộ nội dung hiện có, và nhập toàn bộ mã lệnh dưới đây vào vùng soạn thảo mã lệnh trong tệp Code.gs
Cuối cùng nhấn nút Save. Như vậy chúng ta đã nạp xong phần mã lệnh vào bảng tính của mình.
Để các lệnh này hoạt động, chúng ta cần chọn hàm onOpen, sau nó nhấn lệnh Run. Việc tiếp theo là xác nhận các cấp phép cho mã lệnh vừa tạo.
Mọi người có thể điều chỉnh lại các lệnh sao cho phù hợp với yêu cầu của mình nhé
Mã: Chọn tất cả
function onOpen() {
var menu = SpreadsheetApp.getUi().createMenu('My Menu');
menu.addItem('Sub-Menu 1', 'MyFunction1').addToUi();
menu.addItem('Sub-Menu 2', 'MyFunction2').addToUi();
menu.addItem('Sub-Menu 3', 'MyFunction3').addToUi();
}
function MyFunction1() {
/*
var excel_app = SpreadsheetApp.create('My Spreadsheet');
var excel_id = excel_app.getId();
var excel = SpreadsheetApp.openById(excel_id);
var s = excel.getActiveSheet();
*/
var excel = SpreadsheetApp.getActiveSpreadsheet();
var s = excel.getActiveSheet();
s.setName('My Sheet');
s.deleteColumns(17, 8);
s.deleteRows(100,900);
s.setColumnWidth(1, 110);
s.setColumnWidth(2, 400);
s.setColumnWidths(3, 16, 110);
s.setFrozenColumns(2);
s.setFrozenRows(3);
s.getRange('A4:A100').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.requireValueInList(['ACCEPTANCE', 'CHECKBOX', 'CHECKGRID', 'CHOICE', 'DATE', 'GRID', 'IMAGE1', 'IMAGE2', 'LIST', 'PAGE', 'PARAGRAPH', 'SCALE', 'SECTION', 'TEXT', 'TIME', 'VIDEO'], true)
.build());
s.getRange('A1:A100').setFontWeight('bold').setHorizontalAlignment('center');
s.getRange('A1').setValue('EXERCISE');
s.getRange('A2').setValue('DESCRIBE');
s.getRange('A3').setValue('TYPE');
s.getRange('C1').setValue('FOLDER ID:').setFontWeight('bold').setHorizontalAlignment('right');
s.getRange('E1').setValue('PUBLIC URL:').setFontWeight('bold').setHorizontalAlignment('right');
s.getRange('G1').setValue('COPY FORM:').setFontWeight('bold').setHorizontalAlignment('right');
s.getRange('H1').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.requireValueInList(['YES'], true)
.build());
s.getRange('I1').setValue('LINK COPY:').setFontWeight('bold').setHorizontalAlignment('right');
s.getRange('K1').setValue('SHUFFLE:').setFontWeight('bold').setHorizontalAlignment('right');
s.getRange('L1').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.requireValueInList(['YES'], true)
.build());
s.getRange('B3').setValue('QUESTION').setFontWeight('bold').setHorizontalAlignment('center');
s.getRange('C3').setValue('INSTRUCTIONS').setFontWeight('bold').setBackground('#c4daea').setHorizontalAlignment('center');
s.getRange('D3').setValue('POINTS').setFontWeight('bold').setBackground('#ffff66').setHorizontalAlignment('center');
s.getRange('E3').setValue('TEXT TRUE').setFontWeight('bold').setBackground('#00ffff').setHorizontalAlignment('center');
s.getRange('F3').setValue('TEXT FALSE').setFontWeight('bold').setBackground('#00ffff').setHorizontalAlignment('center');
s.getRange('G3').setValue('LINK').setFontWeight('bold').setBackground('#00ffff').setHorizontalAlignment('center');
s.getRange('H3').setValue('LINK TEXT').setFontWeight('bold').setBackground('#00ffff').setHorizontalAlignment('center');
s.getRange('I3:R3').setValue('OPTION').setFontWeight('bold').setBackground('#d4dee5').setHorizontalAlignment('center');
s.getRange('E4:H100').setBackground('#00ffff');
s.getRange('I4:R100').setBackground('#d4dee5');
s.getRange('C4:C100').setBackground('#c4daea');
s.getRange('D4:D100').setBackground('#ffff66');
};
function MyFunction2() {
var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
AnotherFunction(s);
}
function MyFunction3() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var k = 0; k < sh.length; k++) {
var s = sh[k];
AnotherFunction(s);
}
}
function AnotherFunction(s) {
var r = s.getDataRange();
var nr = r.getNumRows();
var nc = r.getNumColumns();
var lr = s.getLastRow();
var lc = s.getLastColumn();
var d = r.getValues();
for (var x = 0; x < nr; x++) {
var i = d[x][0];
var cr = 1 + x;
var ro = s.getRange(cr, 8, 1, 10);
var op = ro.getValues();
if (i == '') {
continue;
} else if (i == 'CHOICE') {
var arr = [];
for (var ccc = 8; ccc < nc; ccc++) {
var cu = 1 + ccc;
var bgcolor = s.getRange(cr, cu, 1, 1).getBackground();
if (s.getRange(cr, cu, 1, 1).getValue() !== '' && bgcolor === "#00ff00") {
var q1 = d[x][ccc] + " (Correct)";
arr.push(q1);
} else if (s.getRange(cr, cu, 1, 1).getValue() !== '' && bgcolor !== "#00ff00") {
var q1 = d[x][ccc];
arr.push(q1);
}
}
Browser.msgBox(arr);
}
}
}
- Tạo bảng chọn chính có tiêu đề là "My Menu" (Lưu ý: Việc tạo bảng chọn chỉ áp dụng trong trường hợp mã lệnh được đính kèm bên trong bảng tính, điều này đồng nghĩa với việc chúng ta cần mở bảng tính bằng Google Sheets mới có thể chạy được các lệnh liên quan đến việc tạo các bảng chọn)
Mã: Chọn tất cả
var menu = SpreadsheetApp.getUi().createMenu('My Menu');
Mã: Chọn tất cả
menu.addItem('Sub-Menu 1', 'MyFunction1').addToUi();
Mã: Chọn tất cả
var excel_app = SpreadsheetApp.create('My Spreadsheet');
Mã: Chọn tất cả
var excel_id = excel_app.getId();
Mã: Chọn tất cả
var excel = SpreadsheetApp.openById(excel_id);
Mã: Chọn tất cả
var excel = SpreadsheetApp.getActiveSpreadsheet();
Mã: Chọn tất cả
var s = excel.getActiveSheet();
Mã: Chọn tất cả
s.setName('My Sheet');
Mã: Chọn tất cả
s.deleteColumns(17, 8);
Mã: Chọn tất cả
s.deleteRows(100,900);
Mã: Chọn tất cả
s.setColumnWidth(1, 110);
Mã: Chọn tất cả
s.setColumnWidths(3, 16, 110);
Mã: Chọn tất cả
s.setFrozenColumns(2);
Mã: Chọn tất cả
s.setFrozenRows(3);
+ Không cho phép nhập sai
+ Yêu cầu nhập dữ liệu theo các giá trị sau với tùy chọn hiển thị bảng chọn: ACCEPTANCE, CHECKBOX, CHECKGRID, CHOICE, DATE, GRID, IMAGE1, IMAGE2, LIST, PAGE, PARAGRAPH, SCALE, SECTION, TEXT, TIME, VIDEO
+ Áp dụng các thiết lập
Mã: Chọn tất cả
s.getRange('A4:A100').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.requireValueInList(['ACCEPTANCE', 'CHECKBOX', 'CHECKGRID', 'CHOICE', 'DATE', 'GRID', 'IMAGE1', 'IMAGE2', 'LIST', 'PAGE', 'PARAGRAPH', 'SCALE', 'SECTION', 'TEXT', 'TIME', 'VIDEO'], true)
.build());
+ Đặt kiểu chữ in đậm
+ Căn giữa nội dung
Mã: Chọn tất cả
s.getRange('A1:A100').setFontWeight('bold').setHorizontalAlignment('center');
Mã: Chọn tất cả
s.getRange('A1').setValue('EXERCISE');
Mã: Chọn tất cả
s.getRange('E4:H100').setBackground('#00ffff');
Mã: Chọn tất cả
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheets();
Mã: Chọn tất cả
var r = s.getDataRange();
Mã: Chọn tất cả
var nr = r.getNumRows();
Mã: Chọn tất cả
var nc = r.getNumColumns();
Mã: Chọn tất cả
var lr = s.getLastRow();
Mã: Chọn tất cả
var lc = s.getLastColumn();
Mã: Chọn tất cả
var d = r.getValues();
Mã: Chọn tất cả
var ro = s.getRange(cr, 8, 1, 10);
Mã: Chọn tất cả
var bgcolor = s.getRange(cr, cu, 1, 1).getBackground();
Chi tiết tất cả các lệnh xem tại:
+ Các lệnh liên quan đến giao diện người dùng: https://developers.google.com/apps-scri ... ce/base/ui
+ Các lệnh chung liên quan đến bảng tính: https://developers.google.com/apps-scri ... dsheet-app
+ Các lệnh liên quan đến trang tính: https://developers.google.com/apps-scri ... heet/sheet
+ Các lệnh liên quan đến vùng chọn: https://developers.google.com/apps-scri ... heet/range
+ Các lệnh liên quan đến cài đặt kiểm tra dữ liệu: https://developers.google.com/apps-scri ... on-builder