使用脚本的条件格式
Conditional Formatting using script
我在 google 电子表格条件格式方面的问题是边框。我试着写一个脚本,但我卡住了
在我的第一个屏幕截图中,您可以看到数据,在第 7 行和 A 列中,我添加了一个触发器,它应该告诉脚本它是否需要进行格式化。有 1 的地方应该有边框,而 0 或空白则不应该有。
想法是我得到网格 D12 到 J32 的边界,但是由于 0,第 18,27 和 32 行应该没有边界。而且单元格 D12 到 J32 不能硬编码,因为它们是可变的, 1 次它可能直到第 32 行,其他直到 55 与列相同,它可以从 D 到 L,也可以从 D 到 E。这可能会根据更改单元格 B9 调用的模板进行更改。
添加边框后的示例
到目前为止,我编写的脚本考虑了基于单元格 B9 的 onedit,并删除了 D12 中的所有边框,直到底部和侧面,但它使边框保留在顶部并保持完好无损。
问题 我不确定如何编写一个脚本来添加具有可变范围的边框。我猜最简单的方法是让它先写 1 个更大的 table 边框,然后再次删除某些行上的垂直边框。
希望得到帮助。
function onEdit(e) {
var sheet = e.source.getActiveSheet()
if (sheet.getName() !== 'View' || e.range.getA1Notation() !== 'B9') return;
var range = SpreadsheetApp.getActiveSheet().getRange(12,4,100,13);
range.setBorder(false, false, false, false, false, false);
}
我做了一个函数来完成这项工作,但相反,它首先删除所有边框,然后在需要的地方添加边框。但是我不明白你在 B9
等中使用模板的故事......所以我所做的是如果单元格 B9
中有单词 Update
那么它将完成工作并且为 Done
更改单元格 B9
的内容。根据我的理解(或不理解),我将边框相应地更改为 A
范围内的内容
这是我的代码:
function onEdit(e) {
var start = 12;
var sheet = e.source.getActiveSheet()
if (sheet.getName() == 'Sheet1' && e.range.getA1Notation() == 'B9' && e.range.getValue() == "Update") {
var index = SpreadsheetApp.getActiveSheet().getRange("A12:A").getValues();
SpreadsheetApp.getActiveSheet().getRange("D12:J").setBorder(false, false, false, false, false, false);
for(var i in index) {
var range = SpreadsheetApp.getActiveSheet().getRange("D"+(Number(i)+start)+":J"+(Number(i)+start));
if (index[i][0] == 1) {
range.setBorder(true, true, true, true, true, true);
}
}
sheet.getRange("B9").setValue("Done");
}
}
我在 google 电子表格条件格式方面的问题是边框。我试着写一个脚本,但我卡住了
在我的第一个屏幕截图中,您可以看到数据,在第 7 行和 A 列中,我添加了一个触发器,它应该告诉脚本它是否需要进行格式化。有 1 的地方应该有边框,而 0 或空白则不应该有。
想法是我得到网格 D12 到 J32 的边界,但是由于 0,第 18,27 和 32 行应该没有边界。而且单元格 D12 到 J32 不能硬编码,因为它们是可变的, 1 次它可能直到第 32 行,其他直到 55 与列相同,它可以从 D 到 L,也可以从 D 到 E。这可能会根据更改单元格 B9 调用的模板进行更改。
添加边框后的示例
到目前为止,我编写的脚本考虑了基于单元格 B9 的 onedit,并删除了 D12 中的所有边框,直到底部和侧面,但它使边框保留在顶部并保持完好无损。 问题 我不确定如何编写一个脚本来添加具有可变范围的边框。我猜最简单的方法是让它先写 1 个更大的 table 边框,然后再次删除某些行上的垂直边框。
希望得到帮助。
function onEdit(e) {
var sheet = e.source.getActiveSheet()
if (sheet.getName() !== 'View' || e.range.getA1Notation() !== 'B9') return;
var range = SpreadsheetApp.getActiveSheet().getRange(12,4,100,13);
range.setBorder(false, false, false, false, false, false);
}
我做了一个函数来完成这项工作,但相反,它首先删除所有边框,然后在需要的地方添加边框。但是我不明白你在 B9
等中使用模板的故事......所以我所做的是如果单元格 B9
中有单词 Update
那么它将完成工作并且为 Done
更改单元格 B9
的内容。根据我的理解(或不理解),我将边框相应地更改为 A
范围内的内容
这是我的代码:
function onEdit(e) {
var start = 12;
var sheet = e.source.getActiveSheet()
if (sheet.getName() == 'Sheet1' && e.range.getA1Notation() == 'B9' && e.range.getValue() == "Update") {
var index = SpreadsheetApp.getActiveSheet().getRange("A12:A").getValues();
SpreadsheetApp.getActiveSheet().getRange("D12:J").setBorder(false, false, false, false, false, false);
for(var i in index) {
var range = SpreadsheetApp.getActiveSheet().getRange("D"+(Number(i)+start)+":J"+(Number(i)+start));
if (index[i][0] == 1) {
range.setBorder(true, true, true, true, true, true);
}
}
sheet.getRange("B9").setValue("Done");
}
}