如何在 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();
}
我想删除第 [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();
}