如何在谷歌表格的工作表中清除不同工作表上相同的多列



我创建了一个包含 4 张工作表的 Google 工作表工作簿。每个工作表都需要在每个星期五清除以下列(列 C3:S40 和列 U3:U40)。这是我想出的,但它不能一直工作。所以我想知道是否有人可以帮助我简化脚本。提前谢谢你!

function ClearCells()
var sheet = SpreadsheetApp.getActive().getSheetbyName ();
sheet.getRange(C3:S40).clearContent();
sheet.getRange(U3:U40).clearContent();}

试试这个:

function ClearRangesofSelectedSheets() {
const shts = ["Sheet1","Sheet2","Sheet3"];
const ss = SpreadsheetApp.getActive();
shts.forEach(name => {
const sheet = ss.getSheetByName(name);
sheet.getRange("C3:S40").clearContent();
sheet.getRange("U3:U40").clearContent();
});
}

我相信你的目标如下。

  • 您想简化显示脚本。
  • 作为附加功能,您希望将脚本用于Google电子表格中的特定4张工作表。

修改点:

  • 看来你的function ClearCells()功能并没有被{}包围。

  • SpreadsheetApp.getActive().getSheetbyName ()getSheetbyName ()必须getSheetByName("Sheet name")

  • 当使用类表getRange方法时,需要给出sheet.getRange(C3:S40).clearContent()sheet.getRange(U3:U40).clearContent()C3:S40U3:U40作为字符串值,如下所示。

    sheet.getRange("C3:S40").clearContent();
    sheet.getRange("U3:U40").clearContent();
    
  • 在脚本中,可以通过一次调用修改sheet.getRange("C3:S40").clearContent()sheet.getRange("U3:U40").clearContent(),如下所示。

    sheet.getRangeList(["C3:S40", "U3:U40"]).clearContent();
    
  • 为了将您的脚本用于特定的 4 张纸,需要提供表格。

当这些要点反映在您的脚本中时,下面的修改怎么样?

修改后的脚本:

function ClearCells() {
var sheetNames = ["Sheet1", "Sheet2",,,]; // Please set the sheet names you want to use.
var sheet = SpreadsheetApp.getActive();
sheetNames.forEach(sheetName =>
sheet.getSheetByName(sheetName).getRangeList(["C3:S40", "U3:U40"]).clearContent()
);
}

或者,为了简化脚本,也可以使用以下脚本。使用此脚本时,请在高级 Google 服务中启用表格 API。

function ClearCells() {
var sheetNames = ["Sheet1", "Sheet2",,,]; // Please set the sheet names you want to use.
var ss = SpreadsheetApp.getActive();
Sheets.Spreadsheets.Values.batchClear({ ranges: sheetNames.flatMap(s => ["C3:S40", "U3:U40"].map(r => `'${s}'!${r}`)) }, ss.getId());
}

我认为当使用Sheets API时,流程成本可能会降低一点。裁判

引用:

  • 类表的 getRangeList(a1Notations)
  • 方法:电子表格.值.批处理清除
  • forEach()
  • 地图()

最新更新