使用 Apps 脚本在 Google 表格中插入新行时保留行格式和公式?

Preserving row format and formula when inserting new row in Google Sheets using Apps Script?

我有一个 Google Sheets 数据库:

https://docs.google.com/spreadsheets/d/1VzHY8fTq8OsXhpHYHESSSPxeVNOnqxpjcsyWJpbuEOs/edit?usp=sharing

'Base Stats' sheet (Sheet 1) 定期更新以添加新行。第 1 行是 header 行。第 2 行之后的第 5-8 列应用了字体颜色。第 6 列有一个下拉列表。第 7、12 和 13 列有公式。插入新行时,目前不会复制上面详述的格式和公式。

我做了一些搜索,找到了这个可能的答案:

function onOpen(e){
 var ui = SpreadsheetApp.getUi()
 ui.createMenu("Format sheet").addItem("Format", "setFormat").addToUi()

}
function onEdit(e){           //This is activated each time a modification happens in the sheet
  var ss = SpreadsheetApp.getActive()
  var sheet =ss.getActiveSheet()
  if(sheet.getSheetName() == "Base Stats"){
  var entryRange = e.range
  var range  = sheet.getRange(2,entryRange.getColumn(),1,entryRange.getNumColumns())              //This will be you range to get the formatting from row "1" and corresponding column based on the column being edited
  Logger.log(entryRange.getA1Notation())
  range.copyFormatToRange(sheet, entryRange.getColumn(), entryRange.getNumColumns()+entryRange.getColumn()-1, entryRange.getRow(), entryRange.getNumRows()+entryRange.getRow()-1)
  Logger.log(entryRange.getColumn())
  if(entryRange.getColumn() == 12){                                 //This column value will not be allowed modified except for row 1 of that column
    if (entryRange.getRow() != 2){                                  //The columns in row "1" will be allowed to modified
    e.range.setValue((e.oldvalue == undefined? "": e.oldvalue))
    }
  }
  }
}

function setFormat(){
  var ss = SpreadsheetApp.getActive()
  var sheet = ss.getActiveSheet()
  var firstRow = sheet.getRange(1, 1, 1, sheet.getLastColumn())
  var dataRange = sheet.getDataRange()
  firstRow.copyFormatToRange(sheet, 1, dataRange.getNumColumns(), 2, dataRange.getNumRows())

}

但是,我不确定我需要在脚本中编辑什么才能应用于我的 Google Sheet 示例?非常感谢任何帮助。

您不需要复制公式,更改 arrayformula,M1 中的示例

={"Score 
(Weighted)";arrayformula((H2:H*2)+(E2:E*1.5)+(F2:F+G2:G))}

立即为所有列(和整列)应用格式,您无需复制格式规则