目标:
例如,假设第一次在单元格H3中出现一个名为"John A“的名称。在本例中,我希望能够向H3:I3添加边框。如果"John“出现在"John”下面,那么我想给H4:I4添加另一个边框。诸若此类。
例如,如果单元格H4自动删除"John“,那么我也要删除H4:I4的边框。如果"John A“也从单元格H3中删除,那么我也要删除H3:I3的边框。
当前代码:,我试图将位于另一个文件中的onEdit()函数的参数传递给insertDynamicBorders()函数,因为我认为这将是事件触发的问题。
function insertDynamicBorders(row) {
var statusSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Status");
// Columns
dateColumn = 1;
if (row > 16) {
if (statusSheet.getRange("H3") != null ) {
var cell = statusSheet.getRange("H3:I3");
cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
} else {
var cell = statusSheet.getRange("H3:I3");
cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
}
if (statusSheet.getRange("H4") != null) {
var cell = statusSheet.getRange("H4:I4");
cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
} else {
var cell = statusSheet.getRange("H4:I4");
cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
}
if (statusSheet.getRange("H5") != null) {
var cell = statusSheet.getRange("H5:I5");
cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
} else {
var cell = statusSheet.getRange("H5:I5");
cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
}
if (statusSheet.getRange("H6") != null) {
var cell = statusSheet.getRange("H6:I6");
cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
} else {
var cell = statusSheet.getRange("H6:I6");
cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
}
if (statusSheet.getRange("H7") != null) {
var cell = statusSheet.getRange("H7:I7");
cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
} else {
var cell = statusSheet.getRange("H7:I7");
cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
}
}
}
发行:
发布于 2021-01-19 10:28:21
当使用Apps脚本触发器时,特别是使用onEdit
**,时,注意 [following](https://developers.google.com/apps-script/guides/triggers#getting_started):**是很重要的
当用户更改电子表格中的值时,
onEdit(e)
将运行。 脚本执行和API请求不会导致触发器运行。例如,调用Range.setValue()
编辑单元格并不会导致电子表格的onEdit
触发器运行。
考虑到上述因素,你想要的东西就不能直接实现。
解决办法
在这种情况下,您可以做的是使用可安装触发器并创建一个时间驱动触发器。您可以创建一个脚本,该脚本将检查电子表格中与前一个版本相比发生的任何更改。因为这必须由您以编程的方式完成,所以这是一个更麻烦的旁路。
另一个选项(仍然使用时间驱动触发器)是检查列H
和I
中的最后一行(如您的示例所示),并考虑只将所需的值插入这些列的事实。
参考文献
https://stackoverflow.com/questions/65774834
复制相似问题