我创建了一个包含 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:S40
和U3: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()
- 地图()