提问人:maburgess 提问时间:10/30/2023 更新时间:10/30/2023 访问量:21
尝试对使用 Google 表单进行数据输入的 Google 工作表进行条件格式化
Trying to conditional format Google sheet that uses a Google form for data entry
问:
我已转向使用谷歌表单进行数据输入,以尝试提高数据完整性。但是,在将新条目添加到工作表底部后,条件格式将被抛弃。这意味着必须不断手动更改格式范围,这不是很多工作,但当您想让工作表自行运行时,这有点令人沮丧。
我是应用程序脚本(以及一般编码)的新手,但一直在尝试拼凑一些可能有效的东西。我希望 A 列 (A4:A) 中的单元格根据单元格的值更改颜色。到目前为止,我有以下内容 - 它适用于第 4 行,但不适用于其他行。我正在努力让代码识别出第一行下方有更多数据。
我收到的错误说:
“数据中的行数与范围内的行数不匹配。数据有 1,但范围有 196。
function conditionalformatting(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Warehouse Queries');
var range = sheet.getRange(4,1,sheet.getLastRow(),1);
var cellvalues= range.getValues();
var colors = [];
if (cellvalues = 'Warehouse Admin to Action') {
colors.push(["#6db05f"]);}
else if (cellvalues = 'Warehouse Coordinator to Action') {
colors.push(["#f0c784"]);}
else if (cellvalues = 'POD required - Supply Chain to source') {
colors.push(["#84bef0"]);}
else {colors.push([""]);}
range.setBackgrounds(colors);
}
谢谢!
答:
0赞
Tanaike
10/30/2023
#1
修改要点:
- 我认为在你的脚本中,总是运行。因为被用作 true。并且,意味着 的文本被替换为 varible 。如果要比较该值,请使用 或 代替。
colors.push(["#6db05f"])
cellvalues = 'Warehouse Admin to Action'
cellvalues = 'Warehouse Admin to Action'
'Warehouse Admin to Action'
cellvalues
==
===
=
- 而且,我认为在你的剧本中,总是.
colors
["#6db05f"]
var range = sheet.getRange(4,1,sheet.getLastRow(),1);
可能是 .而且,我认为这也可以使用。var range = sheet.getRange(4, 1, sheet.getLastRow() - 3, 1);
var range = sheet.getRange("A4:A" + sheet.getLastRow());
- 如果要将每个单元格值与 、 进行比较,则需要使用循环。
'Warehouse Admin to Action'
'Warehouse Coordinator to Action'
'POD required - Supply Chain to source'
当这些要点反映在您的脚本中时,如何进行以下修改?
修改后的脚本:
function conditionalformatting(e) {
var obj = {
'Warehouse Admin to Action': "#6db05f",
'Warehouse Coordinator to Action': "#f0c784",
'POD required - Supply Chain to source': "#84bef0",
};
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Warehouse Queries');
var range = sheet.getRange("A4:A" + sheet.getLastRow());
var cellvalues = range.getValues();
var colors = cellvalues.map(([a]) => [obj[a] || null]);
range.setBackgrounds(colors);
}
运行此脚本时,将从“A4:A”中检索单元格值,并使用 设置背景颜色。并且,“A4:A”的背景颜色发生了变化。
obj
为了搜索值并设置颜色代码,我使用了 .
obj
参考:
评论
0赞
maburgess
10/31/2023
工作完美 - 非常感谢您的帮助和解释!
0赞
Tanaike
10/31/2023
@maburgess 感谢您的回复。我很高兴您的问题已得到解决。也谢谢你。
评论