# Google App Script
Mình có đề cập sử dụng Google Sheet như là công cụ để crawl dữ liệu.
Dạng kiểu bạn có thể viết VB
trong Excel
.
Thì đây với cương vị là một JS developer không biết cái tool này thì hơi phí.
# Yeah, start with Why
Why?
- Xử lý data, lọc data, format lại data
- Xử lý công thức phức tạp không thể nào sử dụng Formula bình thường
- Nhiều feature hay: đặt lịch tự động chạy script, tự động trigger script theo sự kiện, viết bằng JS nè, ...
How?
Trên thanh công cụ
>Trình chỉnh sửa tập lệnh
- Đặt tên dự án + Viết Code
Chạy
>Chạy hàm
>Chọn
>Xem kết quả
Tài liệu nghiên cứu
Rất nhiều thứ hay ho ở đây như:
UrlFetchApp
để fetch HTML về nè,Cheerio
để xử lý HTML string như jQuery xử lý DOM vậy
# Get Sheet
Để xử lý dữ liệu, trước hết phải biết thao tác trên trang nào, dưới đây là 2 cái mình hay dùng
# Sheet đang active
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
# Sheet qua tên
var sheetName = 'DS Lớp';
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
# Get & Set Cell Data
Sau khi lấy được sheet thì cần get / set data vào Cell. Viết nó thành helpers để sau này nhìn tham số mà truyền vào thôi.
Tại vì cái getRange origin nó quá phức tạp đi =)) mình thì lười mở API lên đọc. Thế thôi, với lại cũng khá ý nghĩa
function getCellValue(sheet, rowIndex, colIndex) {
return sheet.getRange(rowIndex, colIndex).getValue();
}
function setCellValue(sheet, rowIndex, colIndex, value) {
sheet.getRange(rowIndex, colIndex).setValue(value);
}
Note: rowIndex
, colIndex
đều được đếm từ 1 nhé. Không phải số 0 giống mảng trong lập trình đâu.
# Hàm tiện ích khác
# getMaxRows
Lấy số dòng của Sheet
sheet.getMaxRows();
# getDataRange
Lấy tất cả data. Có thể parse nó qua thành JSON các kiểu =))
Nhưng mà parse xong thì đừng set nó vào Cell, vì mỗi Cell chiều dài có giới hạn
var data = sheet.getDataRange().getValues();
var jsonData = JSON.stringify(data);
# Lên lịch
- Dưới thanh công cụ trong trình chỉnh sửa Code, đó là thanh công cụ thứ 2 =))
- Trên thanh đó có nút
Save
dạng icon - Cạnh nút ấy, bên phải có cái icon
Đồng hồ
, click vào đấy bạn sẽ đến nơi muốn đến - Tại ấy, tìm
Tạo trình kích hoạt mới
- Mò tiếp =))
# To be continued
... Sau này update thêm