TL;DR: Cách khắc phục nhanh
Hãy coi lỗi này là cách Google thông báo rằng hệ thống "đang bị quá tải". Đây là một lỗi quá hạn (timeout) chung thường xảy ra khi backend đang bận hoặc trang tính của bạn quá cồng kềnh. Nếu script của bạn đã hoạt động bình thường vào hôm qua nhưng hôm nay lại lỗi, hãy thử ba bước sau:
- Triển khai vòng lặp thử lại (Retry Loop): Bao bọc các lệnh gọi
SpreadsheetApptrong khốitry-catchbằng cách sử dụng exponential backoff (thời gian chờ tăng dần). - Xử lý dữ liệu hàng loạt: Thay thế
getValue()bên trong các vòng lặp bằng một lệnh gọigetValues()duy nhất để giảm thiểu chi phí tài nguyên API. - Loại bỏ dữ liệu thừa: Xóa tất cả các hàng và cột không sử dụng. Một trang tính có 50.000 hàng trống vẫn tiêu tốn siêu dữ liệu (metadata) và làm chậm dịch vụ.
/**
* Một hàm wrapper mạnh mẽ cho các thao tác trang tính
*/
function callWithRetry(fn, maxRetries = 3) {
for (let i = 0; i {
let val = row[0];
});
3. Dọn dẹp trang tính triệt để
Google Sheets được lưu trữ dưới dạng cấu trúc XML. Ngay cả khi một ô "trống", hệ thống vẫn theo dõi định dạng và siêu dữ liệu của nó. Nếu trang tính của bạn có 20 cột nhưng có tới 1.000 cột trống bên phải, hãy xóa chúng. Việc cắt giảm một trang tính từ 500.000 ô xuống còn 10.000 ô thực tế có thể giảm thời gian thực thi xuống 50% hoặc hơn.
4. Giảm tải các tính toán nặng
Trang tính của bạn có hàng trăm lệnh gọi ARRAYFORMULA hoặc IMPORTRANGE không? Những lệnh này buộc trang tính phải tính toán lại mỗi khi script mở nó. Nếu việc tính toán mất hơn 30 giây, dịch vụ script sẽ bị quá hạn. Hãy cân nhắc việc sử dụng script để thực hiện các phép toán và ghi các giá trị cuối cùng dưới dạng văn bản tĩnh thay thế.
Cách xác minh việc khắc phục
Kiểm tra tiến trình của bạn bằng ba chỉ số sau:
- Nhật ký thực thi (Execution Logs): Theo dõi tab "Executions" trong bảng điều khiển Apps Script. Nếu bạn thấy các mã trạng thái "Timed Out" hoặc "Failed" giảm dần, logic thử lại của bạn đang hoạt động tốt.
- Xử lý theo từng phần (Chunks): Nếu bạn đang xử lý hơn 100.000 hàng, đừng xử lý tất cả cùng một lúc. Hãy chia chúng thành các đợt 5.000 hàng để giữ cho mức sử dụng bộ nhớ thấp.
- Kiểm tra Issue Tracker: Nếu lỗi vẫn tiếp diễn mặc dù đã tối ưu hóa, hãy truy cập Google Apps Script Issue Tracker. Đôi khi đây là sự cố ngừng hoạt động theo khu vực mà chỉ Google mới có thể khắc phục.

