2015-06-21 2 views
1

gs, который я использовал в прошлом для проверки дубликатов, больше не работает. Сценарий будет проверять все ячейки в распространенном листе, если они были одинаковыми, он выделяет все их вхождения зеленым цветом. У меня также была другая функция, которая вернет все ячейки обратно на белый.Google Spreadsheet setBackgroundColors() «Устаревший»

setBackgroundColors() устарел; людям было рекомендовано использовать setBackground(). Сценарий все еще не работает ...

Вот мой gs, сделайте копию и скрипки с ним. Большое спасибо ...
https://docs.google.com/spreadsheets/d/1UELTxZRZPKQKU9NsQwNefvdxJDM0xDt8904sZy3etoY/edit#gid=0

Вот сценарий.

/** 
 
* Retrieves all the rows in the active spreadsheet that contain data and logs the 
 
* values for each row. 
 
* For more information on using the Spreadsheet API, see 
 
* https://developers.google.com/apps-script/service_spreadsheet 
 
*/ 
 
function readRows() { 
 
    var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var rows = sheet.getDataRange(); 
 
    var numRows = rows.getNumRows(); 
 
    var values = rows.getValues(); 
 

 
    for (var i = 0; i <= numRows - 1; i++) { 
 
    var row = values[i]; 
 
    Logger.log(row); 
 
    } 
 
}; 
 

 
/** 
 
* Adds a custom menu to the active spreadsheet, containing a single menu item 
 
* for invoking the readRows() function specified above. 
 
* The onOpen() function, when defined, is automatically invoked whenever the 
 
* spreadsheet is opened. 
 
* For more information on using the Spreadsheet API, see 
 
* https://developers.google.com/apps-script/service_spreadsheet 
 
*/ 
 
function onOpen() { 
 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var entries = [{ 
 
    name : "Check Directory", 
 
    functionName : "CheckDirectory" 
 
    }]; 
 
    spreadsheet.addMenu("Script Center Menu", entries); 
 
}; 
 

 
function CheckDirectory() { 
 
    var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var dataRange = sheet.getDataRange(); 
 
    var data = dataRange.getValues(); 
 
    var numRows = data.length; 
 
    var numColumns = data[0].length; 
 
    
 
    var formats = []; 
 
    var values = []; 
 
    for (var i = 0; i < numRows; i++) { 
 
    formats[i] = []; 
 
    for (var j = 0; j < numColumns; j++) { 
 
     formats[i][j] = 'white'; 
 
     if (data[i][j] != '') { 
 
     values.push([data[i][j], i, j]); 
 
     } 
 
    } 
 
    } 
 
    var numValues = values.length; 
 
    
 
    for (var k = 0 ; k < numValues - 1; k++) { 
 
    if (formats[values[k][1]][values[k][2]] == 'white') { 
 
     for (var l = k + 1; l < numValues; l++) { 
 
     if (values[k][0] == values[l][0]) { 
 
      formats[values[k][1]][values[k][2]] = 'green'; 
 
      formats[values[l][1]][values[l][2]] = 'green'; 
 
     } 
 
     } 
 
    } 
 
    } 
 
     
 
    dataRange.setBackground(formats); 
 
}; 
 

 
function resetCheckDirectory() { 
 
    var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var dataRange = sheet.getDataRange(); 
 
    var data = dataRange.getValues(); 
 
    var numRows = data.length; 
 
    var numColumns = data[0].length; 
 
    
 
    var formats = []; 
 
    var values = []; 
 
    for (var i = 0; i < numRows; i++) { 
 
    formats[i] = []; 
 
    for (var j = 0; j < numColumns; j++) { 
 
     formats[i][j] = 'white'; 
 
     if (data[i][j] != '') { 
 
     values.push([data[i][j], i, j]); 
 
     } 
 
    } 
 
    } 
 
    var numValues = values.length; 
 
    
 
    for (var k = 0 ; k < numValues - 1; k++) { 
 
    if (formats[values[k][1]][values[k][2]] == 'white') { 
 
     for (var l = k + 1; l < numValues; l++) { 
 
     if (values[k][0] == values[l][0]) { 
 
      formats[values[k][1]][values[k][2]] = 'white'; 
 
      formats[values[l][1]][values[l][2]] = 'white'; 
 
     } 
 
     } 
 
    } 
 
    } 
 
     
 
    dataRange.setBackground(formats); 
 
};

ответ

1

Использование setBackgrounds(). С s, так как это метод, который применяет несколько цветов фона для нескольких ячеек.

+0

Я попробовал setBackgrounds() и setBackground() Спасибо за предложение. –

+0

Какое сообщение об ошибке вы получаете? –

+0

Нет сообщения об ошибке, получается, когда я попробовал setBackgrounds(), прежде чем у меня были цвета «GREEN» и «WHITE» во всех кепках. Просто попробовал setBackgrounds() снова с ними в нижнем регистре, и он работает. Задача решена. –