Google Sheets 脚本,插入行后保持条件格式
Google Sheets script, maintaining conditional formatting after inserting a row
我有一个跨页sheet,其中有第 6 行以下的项目列表。第五行保留用于输入新项目的详细信息。然后我使用自定义按钮将项目添加到列表中(在第 6 行上方插入新行,将第 5 行复制到第 6 行,清除第 5 行)。我的问题是我在列 A:C 上设置了条件格式,并且在 'addItem' 运行后新行未包含在条件格式规则中,它从 'A1:C1211' 更改为 'A1:C4,A6:C1211'(随着更多项目的添加,差距会增加)。我怎样才能将格式规则应用到新行,或者之后更新规则以包含新行?
在 sheet 中手动插入行会保持格式,所以不确定为什么不使用脚本保持格式。
function addItem() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var poshSheet = spreadsheet.getSheetByName("Posh");
var data = spreadsheet.getSheetByName("Background Data");
var cell;
var inputRow = poshSheet.getRange('A5:R5');
var insertRow = poshSheet.getRange('A6:R6');
if(inputRow != null){
//get and updateItemNo
var itemNo = data.getRange('D12').getCell(1, 1).getValue();
inputRow.getCell(1,1).setValue(itemNo);
data.getRange('D12').getCell(1, 1).setValue(itemNo+1);
//insert blank row at top
poshSheet.insertRowBefore(6);
//copy input
inputRow.copyTo(insertRow);
//clear input row
inputRow.clear()
}
}
我认为你的问题的原因是 inputRow.clear()
。在这种情况下,格式也被清除。由此,范围被分割。那么修改如下呢?
发件人:
inputRow.clear();
收件人:
inputRow.clear({contentsOnly: true});
或
inputRow.clearContent();
注:
- 在这种情况下,单元格值被清除而不拆分范围。
参考文献:
如果我误解了你的问题,这不是你想要的结果,我深表歉意。
我有一个跨页sheet,其中有第 6 行以下的项目列表。第五行保留用于输入新项目的详细信息。然后我使用自定义按钮将项目添加到列表中(在第 6 行上方插入新行,将第 5 行复制到第 6 行,清除第 5 行)。我的问题是我在列 A:C 上设置了条件格式,并且在 'addItem' 运行后新行未包含在条件格式规则中,它从 'A1:C1211' 更改为 'A1:C4,A6:C1211'(随着更多项目的添加,差距会增加)。我怎样才能将格式规则应用到新行,或者之后更新规则以包含新行?
在 sheet 中手动插入行会保持格式,所以不确定为什么不使用脚本保持格式。
function addItem() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var poshSheet = spreadsheet.getSheetByName("Posh");
var data = spreadsheet.getSheetByName("Background Data");
var cell;
var inputRow = poshSheet.getRange('A5:R5');
var insertRow = poshSheet.getRange('A6:R6');
if(inputRow != null){
//get and updateItemNo
var itemNo = data.getRange('D12').getCell(1, 1).getValue();
inputRow.getCell(1,1).setValue(itemNo);
data.getRange('D12').getCell(1, 1).setValue(itemNo+1);
//insert blank row at top
poshSheet.insertRowBefore(6);
//copy input
inputRow.copyTo(insertRow);
//clear input row
inputRow.clear()
}
}
我认为你的问题的原因是 inputRow.clear()
。在这种情况下,格式也被清除。由此,范围被分割。那么修改如下呢?
发件人:
inputRow.clear();
收件人:
inputRow.clear({contentsOnly: true});
或
inputRow.clearContent();
注:
- 在这种情况下,单元格值被清除而不拆分范围。
参考文献:
如果我误解了你的问题,这不是你想要的结果,我深表歉意。