首页 > 解决方案 > 如何在新行下添加新行的脚本

问题描述

所以基本上我有一个用于添加新行的宏:

function Row() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('66:66').activate();
  spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveRange().getLastRow(), 1);
  spreadsheet.getActiveRange().offset(spreadsheet.getActiveRange().getNumRows(), 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('D74').activate();

它在最后一行之后添加了一行,但是每当我再次使用宏时,它都会在新行之间而不是在新行下添加新行。

还有一种方法可以完全复制前一行的格式吗?

谢谢!

标签: google-apps-script

解决方案


这会在最后一个包含内容的行之后插入一个新行,并复制其格式。

function newRowAfterContent() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.insertRowAfter(sheet.getLastRow());
  sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).copyFormatToRange(sheet, 1, sheet.getLastColumn(), sheet.getLastRow() + 1, sheet.getLastRow() + 1);
}

对于您使用表格的情况:

function newRowAfterNamedRange() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var namedRangeObj = sheet.getNamedRanges()
    .find((range) => range.getName() == "MyRange");
  var namedRange = namedRangeObj.getRange();
  sheet.insertRowAfter(namedRange.getRow() + namedRange.getHeight() - 1);
  sheet.getRange(namedRange.getRow() + namedRange.getHeight() - 1, namedRange.getColumn(), 1, namedRange.getWidth()).copyFormatToRange(sheet, namedRange.getColumn(), namedRange.getColumn() + namedRange.getWidth() - 1, namedRange.getRow() + namedRange.getHeight(), namedRange.getRow() + namedRange.getHeight());
  namedRangeObj.setRange(sheet.getRange(namedRange.getRow(), namedRange.getColumn(), namedRange.getHeight() + 1, namedRange.getWidth()));
}

推荐阅读