Nếu bạn mới làm quen với Google Apps Script, đây là một trong những mẹo giúp script chạy nhanh hơn rất nhiều.
💡 Apps Script Tips & Tricks #1: Dùng getValues() thay vì getValue() trong vòng lặp
Nếu bạn mới làm quen với Google Apps Script, đây là một trong những mẹo giúp script chạy nhanh hơn rất nhiều.
❌ Cách nhiều người thường viết
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
for (let i = 2; i <= sheet.getLastRow(); i++) {
const value = sheet.getRange(i, 1).getValue();
Logger.log(value);
}Đoạn code trên sẽ gọi API của Google Sheets mỗi lần lặp, nên nếu có vài nghìn dòng thì tốc độ sẽ giảm đáng kể.
✅ Cách tối ưu
Đọc toàn bộ dữ liệu một lần rồi xử lý trong bộ nhớ.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
const values = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1).getValues();
values.forEach(row => {
Logger.log(row[0]);
});Hoặc đơn giản hơn:
const data = sheet.getDataRange().getValues();Sau đó thao tác với mảng data thay vì đọc từng ô.
📈 Lợi ích
- Giảm số lần gọi Google Sheets API.
- Script chạy nhanh hơn nhiều khi xử lý dữ liệu lớn.
- Hạn chế lỗi
Exceeded maximum execution time. - Code gọn và dễ bảo trì hơn.
💬 Mẹo nhớ nhanh
Đọc nhiều → xử lý trong RAM → ghi một lần.
Thay vì:
Đọc 1 ô → Xử lý
Đọc 1 ô → Xử lý
Đọc 1 ô → Xử lý
...Hãy làm:
Đọc toàn bộ dữ liệu
↓
Xử lý trong JavaScript
↓
Ghi kết quả một lầnĐây là nguyên tắc tối ưu hiệu năng quan trọng nhất khi làm việc với Google Apps Script và Google Sheets.
Nếu thấy hữu ích, mình sẽ chia sẻ thêm series Apps Script Tips & Tricks, bao gồm:
- 🚀 CacheService để tăng tốc ứng dụng.
- ⚡ Batch Update với
setValues(). - 📦 PropertiesService để lưu cấu hình.
- 🔒 LockService tránh xung đột khi nhiều người chạy script.
- ⏰ Trigger tự động hóa công việc.
- 🌐 Gọi REST API và xử lý JSON hiệu quả.
- 📊 Tối ưu xử lý dữ liệu với hơn 100.000 dòng.
Theo dõi series để cùng viết Apps Script hiệu quả hơn mỗi ngày!
Chưa có bình luận nào. Hãy là người đầu tiên chia sẻ suy nghĩ!