7

Tại công ty/đại lý tiếp thị của chúng tôi, chúng tôi đang sử dụng trình theo dõi chính trong Google Trang tính để theo dõi tất cả các chiến dịch quảng cáo trả tiền mà chúng tôi đang xử lý cho khách hàng của mình. Tài liệu ngày càng dài và nhiều quy tắc định dạng có điều kiện mà chúng tôi đang sử dụng đang trở nên nặng nề và chậm chạp khi có bất kỳ thay đổi nào đối với tài liệu.Cách tăng tốc các quy tắc định dạng có điều kiện nặng

Năm nhân viên đang sử dụng tài liệu tại bất kỳ thời điểm nào, thực hiện thay đổi cho cột "TÌNH TRẠNG" khi có thay đổi cho chiến dịch - nếu nó sẵn sàng tải lên, nếu nó là SỐNG, nếu nó bị tạm dừng vv. định dạng chỉ đơn giản là thay đổi màu sắc của mỗi dòng dựa trên giá trị trong cột "STATUS". Nó cũng xem xét các ngày bắt đầu/kết thúc và đánh dấu đường màu đỏ nếu có vấn đề. Vv

Làm cách nào để tăng tốc quá trình xử lý bằng tài liệu này? I have created a minified version of our tracker with one line for each conditional formatting rule to make it easy for you to have a look.

Tôi chắc chắn có những cách thông minh hơn để hợp nhất các quy tắc và/hoặc xây dựng tập lệnh có thể xử lý tác vụ dễ dàng hơn và hiệu quả hơn.

+0

tôi đề nghị bạn thử ứng dụng tới 1 cột chứ không phải 26. – pnuts

+0

Rõ ràng là giải pháp nhất thẳng về phía trước, nhờ chỉ nó ra. Nếu chúng tôi muốn giữ nguyên toàn bộ hàng, tôi chắc chắn có nhiều cách hiệu quả hơn để thực hiện những gì chúng tôi đã làm? Giống như kết hợp các quy tắc và hoặc tìm một giải pháp hoàn toàn khác. Có suy nghĩ gì về điều này không? –

Trả lời

4

Câu trả lời này sử dụng tập lệnh để thay đổi màu nền của hàng bất cứ khi nào Trạng thái được thay đổi (hoạt động cho "READY", "LIVE" và "DONE").

Live Demo: https://docs.google.com/spreadsheets/d/1bVwM1wSBVlZTmz5S95RXSrRQxlTKWWN_Hl4PZ81sbGI/edit?usp=sharing

Các kịch bản có thể được xem dưới mục "Tools - Script Editor ..." menu. Nó được kích hoạt bởi một kích hoạt "onEdit" (xem Is it possible to automate Google Spreadsheets Scripts (e.g. without an event to trigger them)?).

Đây là kịch bản chính nó:

function onEdit(e) { 

    var STATUS_COL = 18; 
    var MAX_COLS = 18; 

    var COLOR_READY = "grey"; 
    var COLOR_LIVE = "#512da8"; 
    var COLOR_DONE = "green"; 

    var activeSheet = SpreadsheetApp.getActiveSheet(); 
    var cell = activeSheet.getActiveSelection(); 
    var val = cell.getValues()[0][0]; 
    var color = null; 

    switch (val) { 
    case "READY": 
     color = COLOR_READY; 
     break; 
    case "LIVE": 
     color = COLOR_LIVE; 
     break; 
    case "DONE": 
     color = COLOR_DONE; 
     break; 
    } 

    if (color != null) { 
    var row = activeSheet.getRange(cell.getRow(), 1, 1, MAX_COLS); 
    row.setBackgroundColor(color); 
    } 

} 
+0

thú vị! Một vài câu hỏi, các kịch bản có ít tài nguyên hơn CF không? Nếu tôi cần phải điều chỉnh màu của văn bản cho mỗi hàng cùng một lúc (thay đổi màu nền và màu văn bản), thì mã bổ sung cho điều này là gì? –

+0

Tôi không biết liệu các tập lệnh có nhiều hay ít tài nguyên chuyên sâu hơn CF. Chức năng cho màu văn bản là "setFontColor", xem https://developers.google.com/apps-script/reference/spreadsheet/range#setfontcolorcolor. – opowell

+0

Cảm ơn sự giúp đỡ của bạn, tiền thưởng là của bạn :-) Nếu bạn có một giải pháp cho các quy tắc định dạng conditaionl khác trong tài liệu, đó sẽ là hữu ích nhất quá. Có một vài chồng chéo, cần phải chạy theo thứ tự nhất định để hoạt động đúng cách mà tôi vẫn đấu tranh. –

Các vấn đề liên quan