#google-apps-script
#google-apps-script
Вопрос:
1) У меня будет как минимум 4 столбца, где ячейки будут иметь разный фон 2) Я должен проверить, имеют ли по крайней мере 3 ячейки в строке, скажем, КРАСНЫЙ фон 3) Если это так — выведите что-нибудь в ячейке в этой строке, скажем, «ПРЕДУПРЕЖДЕНИЕ»
Я не специалист по js, единственное, что у меня есть, это:
function check() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Canvas');
if (sheet.getRange("E5").getBackground() == '#ff0e13' amp;amp; sheet.getRange("F5").getBackground() == '#ff0e13' amp;amp; sheet.getRange("D5").getBackground() == '#ff0e13') {
return sheet.getRange('M5').setValue('Warning');
}
}
Это позволяет проверять только определенные ячейки в определенной строке. Как я могу отредактировать это для работы с массивом («перетащить его по всем строкам»)?
Комментарии:
1. вы можете использовать getactiverange для работы с выделением developers.google.com/apps-script/reference/spreadsheet /…
2. Вы хотите, чтобы скрипт выполнял поиск по всему листу для каждого появления комбинации из 3 ячеек и соответствующим образом обновлялся?
Ответ №1:
Решение состоит в том, чтобы прочитать цвета фона в массиве и выполнить итерацию этого массива строка за строкой, подсчитывая каждое появление красного цвета (или любого другого цвета, просто адаптируйтесь к условию). Затем обновите значения таблицы в другом массиве и, наконец, запишите оба массива обратно на лист.
Читайте комментарии в коде, я добавил опцию раскрашивания ячейки с предупреждением, но вы можете удалить ее, если она вам не нужна.
function checkBGColors() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Canvas');
var maxWidthRange = sheet.getRange(1,1,sheet.getLastRow(),sheet.getMaxColumns());// get the whole filled part of the sheet every possible column
var BGColors = maxWidthRange.getBackgrounds();
var Values = maxWidthRange.getValues();
for(var n=0;n<BGColors.length;n ){
var count = 0;
for(var BG in BGColors[n]){
Logger.log(BGColors[n][BG]);
if(BGColors[n][BG] == '#ff0000'){
count ; // if BG color is red then increment counter
}
}
Logger.log('Count = ' count);
if(count >= 3){
Values[n][12] = 'Warning' ;// column M is index 12, adapt if needed
BGColors[n][12] = 'Orange';// eventually colorize the warning cell
}
}
maxWidthRange.setValues(Values);// update values
maxWidthRange.setBackgrounds(BGColors);//update colors
}