【发布时间】:2020-05-26 22:06:27
【问题描述】:
我的问题是:*如何在 Google Apps 脚本中为 for 循环内的每个单元格单独更改单元格颜色?
我有一个包含多个值的数据集,这些值按 ID 变量分组,我想分别与它们的总体平均值或中位数进行比较。在下面的玩具示例中,您会发现变量 uniqueValues 用作 ID 变量,变量 median 包含每个组的中位数。
我编写的代码在两个条件下检查我的数据并返回是或否。当然,在 Google Apps 脚本中,我想将这些相当无用的结果更改为例如绿色或红色背景颜色。然而,这是我无数次未能成功的部分。也许你可以帮我解决这个问题。
这是我编写的代码,用于查看我的想法是否按预期工作 - 我认为可以。
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 中的整个工作表进行格式化。这显然是不正确的。但是,我不知道如何在我的循环中解决这个问题。也许我需要一个临时变量来添加到循环的迭代中?像row j + i of loop 之类的?
无论如何。任何帮助将不胜感激!
【问题讨论】:
标签: javascript arrays google-apps-script google-sheets