Вы можете сделать следующее в скрипте приложений:
- Получить значения из
sheet1
(столбцы C, D) с помощью getRange и getValues . Для каждой строки выполните следующее: - Проверьте, установлен ли флажок в столбце C.
- Получите массив с разделенными запятыми значениями из столбца D и отфильтруйте их так, чтобы только те которые содержат
TF
хранятся. String.prototype.split () и Array.prototype.filter () используются для этого. - Получение массива со значениями из
sheet2
(столбец E) с getRange и getValues . - Убедитесь, что любое значение из первого массива (значения, разделенные запятыми из столбца D) соответствует любому значению из второго массива (значения из
sheet2
) с Array.prototype.some () . - Если совпадение найдено, используйте setBackground (color) , чтобы изменить цвет фона ячейки.
Это может быть что-то вроде следующего:
function highlightCells() {
var ss = SpreadsheetApp.getActive();
var sheet1 = ss.getSheetByName("sheet1");
var sheet2 = ss.getSheetByName("sheet2");
// Get the values from sheet1 (column C, D):
var firstRow = 1;
var firstCol = 3;
var numRows = sheet1.getLastRow() - firstRow + 1;
var numCols = 2;
var originValues = sheet1.getRange(firstRow, firstCol, numRows, numCols).getValues();
// Iterate through each row in sheet1:
originValues.forEach(function(row, i) {
var checkbox = row[0];
if (checkbox === true) { // Check that checkbox in column C is checked
var cellValue = row[1];
// Get the comma-separated values in column D (only if the contain `TF`, capitalized):
var values = cellValue.split(",").filter(function(value) {
return value.indexOf("TF") !== -1;
});
// Get the values from sheet2:
var firstRow2 = 1;
var column = 5;
var numRows2 = sheet2.getLastRow() - firstRow2 + 1;
var valuesSheet2 = sheet2.getRange(firstRow2, column, numRows2).getValues().map(function(value) {
return value[0];
});
// Look for any comma-separated value in column D (sheet1) that matches a value in column E (sheet2):
var found = values.some(function(value) {
return valuesSheet2.indexOf(value) > -1;
});
// If any value matches, change background color in to red:
if (found) {
sheet1.getRange(i + firstRow, 4).setBackground("red");
}
}
});
}
Я не уверен, хотите ли вы установить цвет фона, если значение соответствует o, не соответствует ли оно (это не ясно в вашем вопросе). Это меняет цвет фона, если значение соответствует . Если вы хотите, чтобы оно изменилось, если оно не соответствует , вам следует сделать следующее: if (!found) {
.
Ссылка: