【发布时间】:2021-01-18 12:48:56
【问题描述】:
目标:
- 根据下表 H 列中的单元格是否不为空,为单元格区域添加边框。该表包含名称和总票号,它们会根据我使用 QUERY 函数提取的数据的某些日期自动出现或消失。我希望能够为名称出现在 H 列的单元格中的单元格范围添加边框。
例如,假设第一次,在单元格 H3 中,出现了一个名为“John A”的名称。在这种情况下,我希望能够为 H3:I3 添加边框。如果“John B”出现在“John A”下方,那么我想为 H4:I4 添加另一个边框。以此类推。
- 根据是否删除了 H 列单元格中的值来删除边框。
例如,如果单元格 H4 的“John B”被自动删除,那么我还想删除 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);
}
}
}
问题:
- 当名称出现在 H 列的单元格中时,不会添加边框,但是当我使用 QUERY 函数直接更改从数据源中提取的数据源时会添加边框。
- 添加边框后,它们会添加到包含名称的单元格区域,也不包含在 H 列的单元格中。
【问题讨论】:
-
“脚本执行和 API 请求不会导致触发器运行。例如,调用 Range.setValue() 编辑单元格不会导致电子表格的 onEdit 触发器运行”link
-
阅读有关简单触发器的文档。他们只响应用户的编辑。
-
我诚挚的道歉,感谢您的反馈。我将通过文档并尝试更多地了解简单的触发器。
标签: google-apps-script google-sheets