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();

注:

  • 在这种情况下,单元格值被清除而不拆分范围。

参考文献:

如果我误解了你的问题,这不是你想要的结果,我深表歉意。