Bước 1: Chuẩn bị môi trường và tài liệu
- Tạo dự án Google Sheets:
Đăng nhập vào tài khoản Google của bạn.
Truy cập vào Google Sheets và tạo một bảng tính mới.
- Mở Google Apps Script:
Trong Google Sheets, chọn Extensions -> Apps Script để mở Google Apps Script Editor.
Bước 2: Lấy dữ liệu từ trang web
- Tạo hàm crawl để lấy dữ liệu:
Trong Google Apps Script Editor, tạo một hàm có tên crawl.
Hàm này sẽ nhận vào tham số date (ngày cần lấy dữ liệu) và isBack (không quan trọng trong bước này).
function crawl(date, isBack) { var dateString = Utilities.formatDate(date, Session.getScriptTimeZone(), 'dd-MM-yyyy'); var url = 'http://3ketqua.net/xo-so-truyen-thong.php?ngay=' + dateString; try { var response = UrlFetchApp.fetch(url); var html = response.getContentText(); var $ = Cheerio.load(html); // Load và xử lý HTML bằng Cheerio var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data'); var row = 2; // Dòng bắt đầu ghi dữ liệu trong bảng tính, A2 $('div[id^="rs_"]').each(function() { var id = $(this).attr('id'); var data = $(this).text().trim(); var position = id.split('_'); var dayOfWeek = Utilities.formatDate(date, Session.getScriptTimeZone(), 'EEEE'); var formattedDate = Utilities.formatDate(date, Session.getScriptTimeZone(), 'dd-MM-yyyy'); // Ghi dữ liệu vào từng ô của hàng hiện tại (row) sheet.getRange('A' + row).setValue(dayOfWeek); sheet.getRange('B' + row).setValue(formattedDate); sheet.getRange('C' + row).setValue(position[1]); // index sheet.getRange('D' + row).setValue(position[2]); // sub index sheet.getRange('E' + row).setValue(data); row++; // Tăng chỉ số dòng để ghi vào dòng tiếp theo }); } catch (e) { Logger.log('Error fetching or parsing data: ' + e.toString()); } }
Mã này sử dụng UrlFetchApp để tải nội dung từ URL và Cheerio để phân tích dữ liệu HTML.
Dữ liệu được ghi vào bảng tính từ cột A đến cột E, bắt đầu từ hàng 2.
- Tạo hàm daily để chạy hàng ngày:
Tạo một hàm daily để gọi hàm crawl với tham số là ngày hiện tại và false.
function daily() { crawl(new Date(), false); }
Hàm này sẽ gọi hàm crawl mỗi ngày để cập nhật dữ liệu vào Google Sheets.
Bước 3: Triển khai và chạy dự án
- Triển khai dự án:
Lưu các thay đổi trong Google Apps Script Editor.
Chọn Publish -> Deploy as API executable.
Chọn phần quyền truy cập (có thể yêu cầu phê duyệt cho ứng dụng của bạn nếu bạn sử dụng dịch vụ Google lần đầu tiên).
- Chạy dự án:
Sau khi triển khai, chọn Run -> daily.
Xác nhận các quyền cần thiết nếu được yêu cầu.
Dự án sẽ chạy và cập nhật dữ liệu từ trang web vào Google Sheets.
Bước 4: Kiểm tra kết quả
Sau khi chạy, kiểm tra bảng tính Data trong Google Sheets để xem dữ liệu đã được cập nhật đúng chưa.
Nếu có lỗi, sử dụng View -> Logs trong Google Apps Script Editor để xem thông tin chi tiết lỗi.
Kết quả
Tuy rằng nó đã chạy thành công, nhưng mình cần nó hiển thị theo dòng kiểu dưới này. xin mọi người có cách giải quyết vấn đề này với ạ:
a2: --
b2: result_date
c2: rs_0_0
d2: rs_1_0
e2: rs_2_0
f2: rs_2_1
g2: rs_3_0
h2: rs_3_1
i2: rs_3_2
j2: rs_3_3
k2: rs_3_4
l2: rs_3_5
m2: rs_4_0
n2: rs_4_1
o2: rs_4_2
p2: rs_4_3
q2: rs_5_0
r2: rs_5_1
s2: rs_5_2
t2: rs_5_3
u2: rs_5_4
v2: rs_5_5
w2: rs_6_0
x2: rs_6_1
y2: rs_6_2
z2: rs_7_0
aa2: rs_7_1
ab2: rs_7_2
ac2: rs_7_3
Nguồn: ChatGPT