Мой вопрос: * Как я могу изменить цвет ячейки в Google Apps Script для каждой ячейки отдельно внутри для l oop?
У меня есть набор данных, содержащий несколько значений, сгруппированных по переменной ID , которые я хотел бы сравнить с их общим средним или медианным значением соответственно. В приведенном ниже примере игрушки вы найдете переменную uniqueValues
, которую я использую как переменную идентификатора, и переменную median
, которая содержит медианное значение для каждой группы.
Написанный мной код проверяет мои данные по двум условиям и возвращает либо да, либо нет. Конечно, в Google Apps Script я хотел бы изменить эти довольно бесполезные результаты, например, на зеленый или красный цвет фона. Однако это та часть, где мне не удавалось добиться успеха бесчисленное количество раз. Может быть, вы могли бы помочь мне решить эту проблему.
Вот код, который я написал, чтобы проверить, работает ли моя идея так, как ожидалось - я думаю, что это так.
var uniqueValues = ["a", "b", "c", "d"];
var median = [10, 12, 13, 18];
var data = [["a", "ab", 1, 2, 1, 8],
["a", "ab", 1, 4, 5, 9],
["a", "ab", 1, 4, 3, 10],
["a", "ab", 8, 2, 4, 11],
["a", "ab", 3, 3, 1, 12],
["b", "bb", 1, 2, 1, 9],
["b", "bb", 1, 8, 3, 11],
["b", "bb", 10, 2, 1, 12],
["b", "bb", 1, 6, 2, 13],
["b", "bb", 11, 21, 1, 16],
["c", "cb", 1, 6, 11, 9],
["c", "cb", 3, 5, 1, 12],
["c", "cb", 1, 6, 11, 13],
["c", "cb", 7, 8, 1, 14],
["c", "cb", 3, 8, 11, 20],
["d", "dd", 4, 4, 11, 16],
["d", "dd", 1, 1, 2, 17],
["d", "dd", 9, 4, 22, 18],
["d", "dd", 2, 6, 5, 19],
["d", "dd", 4, 3, 1, 29]];
var temp = [];
for (let i = 0; i < uniqueValues.length; i++) {
data.map(function (outerArray) {
if (outerArray[i] == uniqueValues[i] && outerArray[5] > median[i]) {
temp.push("yes");
} else if (outerArray[i] == uniqueValues[i] && outerArray[5] <= median[i]) {
temp.push("no");
}
});
}
console.log(temp);
Однако мне не удается добиться успеха в скрипте Google Apps. Я получаю лист полностью зеленого цвета. Вот что я пробовал до сих пор.
var summarySheet = workbook.getSheetByName("01Summary");
// this next line is the cause of my trouble I guess!
var rangeToFormat = summarySheet.getRange(3, 1, summarySheet.getLastRow(), summarySheet.getLastColumn());
var dataForFormat = summarySheet.getRange(3, 1, summarySheet.getLastRow(), summarySheet.getLastColumn()).getValues();
for (let i = 0; i < uniqueValues.length; i++) {
dataForFormat.map(function (outerArray) {
if (outerArray[i] == uniqueValues[i] && outerArray[6] > medianResults[i]) {
rangeToFormat.setBackground("red");
} else if (outerArray[i] == uniqueValues[i] && outerArray[6] <= medianResults[i]) {
rangeToFormat.setBackground("green");
}
});
};
Полагаю, моя ошибка в том, что я использую весь лист в переменной rangeToFormat
для форматирования. Что явно неверно. Однако я не знаю, как исправить это в моем l oop. Может мне нужна временная переменная для добавления к итерациям моего l oop? Типа row j + i of loop
или что-то в этом роде?
В любом случае. Любая помощь будет оценена по достоинству!