Nội dung
Đây là bài đầu tiên trong chuỗi bài Học Ứng dụng Google App Script trong Google Sheet
Nội dung
- Cách khai báo biến trong một hàm của Google App Script
- Đọc ghi thông của một ô (cell) hoặc dải ô (range) trong Google Sheet bằng Google App Script
Tóm tắt
- Google Sheet có 4 phân lớp biến: Application -> Spreadsheet -> Sheet -> Range. Để gọi 1 phân lớp sau, thì đầu tiên, bạn phải gọi các phân lớp đứng đằng trước nó ra
- getRange() trả về vị trí của biến trong ngoặc
- getValue() là hàm lấy giá trị của biến trong ngoặc
- setValue() cho phép ghi giá trị trong ngoặc vào biến đằng trước
- Logger.log() là hàm ghi giá trị trong ngoặc vào nhật kí (log)
I. Khai báo biến
Quy tắc
Trước khi giới thiệu cách khai báo, mình muốn các bạn hiểu rõ quy tắc khai báo sau đây. Nó tuy đơn giản nhưng lại vô cùng quan trọng vì chúng ta sẽ dùng nó khi viết hầu hết các chương trình trên App Script.
Google Sheet có 4 phân lớp biến:
Application -> Spreadsheet -> Sheet -> Range
Để gọi 1 phân lớp sau, thì đầu tiên, bạn phải gọi các phân lớp đứng đằng trước nó ra. Ví dụ, khi muốn làm việc với Spreadsheet, thì bạn phải gọi Application ra. Muốn làm việc với Sheet, thì phải gọi Application -> Spreadsheet. Muốn gọi range (ô / dải ô) thì phải gọi
Application -> Spreadsheet -> Sheet.
1. Khai báo Application
Để khai báo Application bạn dùng cấu trúc như sau:
0 1 | var app = SpreadsheetApp; |
Application là phân lớp đầu tiên khi bạn làm việc với App Script – Sheet. Nói một cách ngắn gọn, hàm trên có chức năng gọi ra chương trình Google Sheet. Đây là hàm bắt buộc, nó sẽ xuất hiện trong hầu hết các bài chia sẻ của mình. Tuy nhiên sau này chúng ta sẽ tiến hành gộp chung nó với hàm bên dưới (Spreadsheet). Còn trong bài này, tạm thời mình tách riêng từng phần để các bạn dễ hiểu.
2. Khai báo Spreadsheet
0 1 | var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); |
Spreadsheet là phân lớp thứ 2, đứng dưới Application. Như bạn biết, trong Google Drive, bạn có thể tạo nhiều file Google Sheet khác nhau. Từng file lại có từng tên khác nhau. Chúng ta dùng hàm getActiveSpreadsheet() để gọi ra file Google Sheet mà chúng ta đang thao tác.
Để biết tại sao phải có SpreadsheetApp đứng trước, bạn vui lòng kéo lên trên để đọc lại Quy tắc
3. Khai báo Sheet
Phân lớp thứ 3 là Sheet. Trong một file Google Sheet sẽ có nhiều sheet nhỏ. Ví dụ trong hình là sheet0, sheet1, và sheet2.
Để khai báo 1 sheet, bạn dùng cú pháp như sau:
0 1 | var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); |
Vẫn theo Quy tắc, bạn phải gọi cả Application và Spreadsheet ra trước.
4. Khai báo Ô / Dải Ô (Range)
Ô hoặc Dải ô là phân lớp nhỏ nhất của 1 file Google Sheet. Có nhiều cách để gọi 1 ô hoặc dải ô. Sau đây mình giới thiệu bạn các cách chính mà mình thường dùng:
- getActiveCell() : ô mà bạn đang chọn trong file Google Sheet
- getActiveRange() : dải ô mà bạn đang chọn trong file Google Sheet
- getRange() : có thể gọi ra ô hoặc cả dải ô bất kì trong ngoặc
Ví dụ cách sử dụng:
0 1 | var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell(); |
Cuối cùng, chúng ta đặt 4 biến trên vào trong cùng 1 function:
0 1 2 3 4 5 6 | function myFunction() { var app = SpreadsheetApp; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell(); } |
Trên thực tế, chúng ta ít khi làm việc với phân lớp Application, nên sẽ không dùng cả 4 biến để khai báo như vậy. Ở bài sau, mình sẽ hướng dẫn các bạn cách thu gọn những dòng lệnh trên.
II. Đọc và ghi thông tin Ô (cell) hoặc Dải ô (range)
Trước khi tiến hành đọc ghi ô hoặc dải ô, bạn cần phải khai báo được vị trí của ô đó bằng hàm getRange().

Ví dụ, mình muốn đọc ghi thông tin của ô B1, là 100000. Thì đầu tiên mình phải gọi ra được vị trí của ô B1 trong bảng tính “sheet1“, trong file “Bài 1“, và trong ứng dụng Google Sheet.
Để gọi vị trí của 1 ô hoặc dải ô, chúng ta dùng hàm getRange()
getRange() trả về vị trí của biến trong ngoặc
hocggsheet.com
Hàm getValue() có tất cả 4 cách dùng. Trong bài này, mình sử dụng cách dùng thứ nhất (a1Notation). Nghĩa là bỏ tên của ô hoặc dải vô vào trong dấu ngoặc kép (” “)
Ví dụ, để gọi vị trí ô B1, mình viết: getRange(“B1”). Cụ thể, chúng ta viết lại như sau:
0 1 2 3 4 5 6 | function myFunction() { var app = SpreadsheetApp; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B1"); } |
Sau khi dùng biến range để gọi vị trí ô B2, ta tiếp tục sử dụng hàm getValue() để lấy giá trị “100000” trong ô B2 ra.
getValue() là hàm lấy giá trị của biến trong ngoặc
Cách dùng:
0 1 | range.getValue(); |
Tuy nhiên, chúng ta sẽ bỏ dòng lệnh trên vào hàm Logger.log()
Logger.log() là hàm ghi giá trị trong ngoặc vào trong nhật kí (log)
hocggsheet.com
0 1 2 3 4 5 6 7 8 | function myFunction() { var app = SpreadsheetApp; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B1"); Logger.log(range.getValue); } |
Chúng ta bấm “Chạy” để thực hiện chương trình. Sau đó bấm “Xem” -> Nhật kí để xem file nhật kí (bản tiếng Anh: View -> Log)


Trong file log (nhật kí) đã hiện giá trị của ô B1, là 100000
Tiếp theo, để ghi giá trị vào ô hoặc dải ô, chúng ta dùng hàm setValue(). Nếu giá trị trong ngoặc là chữ cái thì bạn phải đặt trong dấu ngoặc kép (“”), còn nếu là số thì không cần.
setValue() cho phép ghi giá trị trong ngoặc vào biến đằng trước
hocggsheet.com
Ví dụ, mình muốn ghi giá trị “100” vào ô B2. Mình sẽ viết là:
0 1 | range.setValue(100); |
Ở trong clip hướng dẫn, mình có hướng dẫn các bạn cách ghi giá trị của ô B1 (100000) vào ô B8. Để làm vậy, trước tiên chúng ta cần khai báo vị trí của ô B8 và gán nó vào 1 biến bất kì. Mình đã dùng biến “dich” để làm.
Đồng thời, mình cũng dùng thêm 1 biến “giatri” để lấy giá trị 100000 của ô B1.
0 1 2 | var dich = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B8"); var giatri = range.getValue(); |
Tiếp theo, chúng ta dùng lệnh setValue để thực hiện yêu cầu. Cả bài sẽ được như sau:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function myFunction() { var app = SpreadsheetApp; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B1"); var dich = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B8"); var giatri = range.getValue(); Logger.log(range.getValue()); dich.setValue(giatri); } |
Tình cờ tìm học apps script phát hiện trang của bạn rất hay, đúng cái mình cần, cảm ơn chia sẽ của bạn….Mog bạn tiếp tục viết thêm nhiều bài hay..chúc bạn sức khỏe
Cảm ơn bạn vì đã ghé web ^^
Rất dễ hiểu, xin cảm ơn
Mình rất thích cách bạn viết code, rất dễ hiểu, không đi tắt.
Cảm ơn Admin nhiều nhé.
Cảm ơn bạn đã ghé thăm ^^
Mình cũng đang muốn học. Đi từ bài đầu tiên. Hy vọng kênh sẽ đk phát triển. Rất hay
Cảm ơn bạn đã ghé thăm web ^^
Cám ơn trang web đã truyền tải kiến thức quý báu cho mọi người.
Mong admin giữ vững nhiệt huyết phát triển site phát triển hơn nữa.
Cảm ơn bạn đã ghé thăm web của mình ^^
Bài viết, video đều hay cả bạn à. Bạn nên xem xét để ra một số bài tập ứng dụng nhỏ ở mỗi bài để mọi người luyện tập thêm.
Thân!
Cảm ơn bạn đã ghé thăm web. Mình xin ghi nhận.
Cảm ơn anh nhiều nhiều.
Cảm ơn bạn đã xem bài viết của mình
You must log in to post a comment.