如何在 Google 电子表格中的给定行索引后 clear/delete 数据

How to clear/delete data after a given row index in Google Spreadsheets

我想删除第 [x] 行之后的所有数据。例如,如果 x = 355,我希望在第 355 行之后删除所有数据。

我可以删除 sheet 中的所有内容 google spreadsheet with:

var sheet = ss.getSheetByName('foo');
sheet.clearContents();

我试过用 getRange 方法做到这一点:

var range = SpreadsheetApp
               .getActive()
               .getSheetByName("foo")
               .getRange("A20:E71");
range.clearContent();

但这只是从 A20:E71 中删除内部数据。我想要的是删除第A20行之后的所有数据。

尝试:

  const sheet = SpreadsheetApp.getActiveSpreadsheet()
                              .getSheetByName(`foo`)
  
  sheet.getRange(21, 1, sheet.getLastRow()-20, sheet.getLastColumn())
       .clearContent()

范围定义为超出 A20 等效项的所有行。

函数:

function myFunction(allRowsAfter) {

  const sheet = SpreadsheetApp.getActiveSpreadsheet()
                              .getSheetByName(`foo`)
  
  sheet.getRange(allRowsAfter+1, 1, sheet.getLastRow()-allRowsAfter, sheet.getLastColumn())
       .clearContent()

}

myFunction(20); // Delete all rows after 20

参见:

您需要使用 getLastColumn() and getLastRow() 方法。

根据一行x删除的行数可以通过lastRowIndex - x + 1计算得出。就列而言,您可以使用 1 作为范围的起始值并使用 lastColumnIndex 作为要删除的列数来删除所有列。

Logger.log("Starting script...")

const ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = ss.getLastRow();
const lastCol = ss.getLastColumn();

const x = 20;
if(lastRow - x + 1 > 0) {
  ss.getRange(20, 1, lastRow - x + 1, lastCol).clearContent();
  Logger.log(`Deleting all content in Range (${[x, 1, lastRow - x + 1, lastCol]})`);
}

Logger.log("Done.")

但是,如果您多次 运行 或 x 比您 Sheet 中内容的最后一行大,则需要考虑一件事。您需要检查该范围是否至少影响一行,否则您将收到错误 The number of rows in the range must be at least 1.,因此在删除前检查 lastRow - x + 1 > 0

清除行后的所有内容

function clearAfterRow(r) {//clear everything after row r 
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("foo");
  const sr = r + 1;
  sh.getRange(sr, 1, sh.getLastRow() - sr + 1, sh.getLastColumn()).clearContent();
}