Một lỗi rất hay gặp khi mới tự động hóa Larkbase bằng Anycross: bạn lấy dữ liệu về nhưng chỉ được vài chục dòng đầu, phần còn lại biến mất. Không phải Anycross hỏng — đó là phân trang (pagination). Khi bảng có nhiều dữ liệu, Larkbase không trả hết một lần mà chia thành từng trang.
has_more và page_token là gì
Mỗi lần gọi lấy dữ liệu, output trả về kèm hai biến quan trọng:
has_more(boolean): còn dữ liệu nữa hay không.page_token: "vé" để lấy trang tiếp theo.
Cơ chế: bạn gọi lần đầu với page_token rỗng → nhận về một trang dữ liệu + page_token mới + has_more. Nếu has_more = true, bạn dùng page_token mới đó gọi tiếp. Cứ vậy đến khi has_more = false.
Dựng vòng lặp trong Anycross
Ý tưởng triển khai:
- Khởi tạo 2 biến:
page_token=null(string),has_more=true(boolean). Để mặc địnhhas_more = truecho vòng lặp chạy lần đầu. - Vòng lặp (đặt số vòng tối đa, ví dụ 100 — quá đủ cho hầu hết bảng để tránh lặp vô hạn).
- Mỗi vòng: gọi lấy dữ liệu với
page_tokenhiện tại, cập nhật lạipage_tokenvàhas_moretừ output mới. - Tích lũy các item lấy được vào một biến
item(hoặc dùng datastore nếu dữ liệu lớn) để gộp toàn bộ. - Thoát khi
has_more = false.
Sau khi chạy, bạn có đủ toàn bộ bản ghi để insert/xử lý tiếp.
Một cái bẫy nhỏ: page_size phải > 0
Khi tôi dựng lần đầu, luồng chạy sai và lặp loạn. Nguyên nhân: page_size để trống/0. Hệ thống yêu cầu giá trị lớn hơn 0 — đặt mặc định một con số hợp lý (ví dụ 50, hoặc 500 nếu muốn ít vòng hơn) là chạy đúng.
Mẹo kiểm tra: sau khi gộp xong, soi nhanh missing value ở các cột chính. Nếu không thiếu ô nào so với bản gốc, nghĩa là bạn đã lấy đủ — không bị rớt trang.
Vì sao đáng làm cho chuẩn
Đây là bước nền của mọi luồng đồng bộ Larkbase: nếu lấy dữ liệu không đủ, mọi báo cáo và automation phía sau đều sai mà rất khó phát hiện. Xử lý phân trang đúng một lần, tái dùng mãi.
Lấy đủ dữ liệu xong, bước tiếp theo thường là ghi ngược lại — xem cách upsert dữ liệu vào Larkbase bằng Anycross (update theo ID, insert cái mới). Nếu đích đến là kho phân tích, tham khảo upsert vào BigQuery bằng Lark Anycross.
Cần một hệ thống dữ liệu chạy ổn cho SME? Xem vài hệ thống tôi đã làm hoặc đặt lịch trao đổi. Muốn triển khai trọn gói? Đó là dịch vụ automation của Diginno — công ty tôi sáng lập.
Bài viết hữu ích?
Chia sẻ để nhiều người biết đến!