我需要帮助,因为我真的是这个编码方面的新手。
我有一个包含很多工作表的电子表格,擦除每个选项卡需要做很多工作。
我在这里看到了一个帖子,并试图适应我的需求,但它不起作用。
我需要:清除每个工作表中名为“Cicle”的文本范围。
从第 1 周期到第 15 周期,我有 15 张纸。
我需要从每个 cicle 中清除 B5:D15 和 B20:D35 和 F5:F35 的范围。我有一个垃圾桶的图像图标,我将脚本分配给这个图标。
这是我得到的:
function clearTextCicle() {
var sourceSS = SpreadsheetApp.getActive().find(sheet =>
sheet.getName().includes("'Cicle'"))
sheet.getRange('B5:B15').clearContent();
sheet.getRange('F5:F15').clearContent();
}
感谢您的关注和任何帮助!
回答1
在您的情况下,如何进行以下修改?
修改后的脚本:
function clearTextCicle() {
var search = "Cicle";
var len = search.length;
var ss = SpreadsheetApp.getActive();
var sheets = ss.getSheets().filter(s => s.getName().slice( 0, len ) == search);
if (sheets.length == 0) return;
sheets.forEach(s => s.getRangeList(['B5:B15', 'F5:F15']).clearContent());
}
在此修改中,特定工作表名称的工作表如
Cicle##
使用filter
。并且,使用范围列表清除了 2 个范围。在这种情况下,我认为您也可以使用
var sheets = ss.getSheets().filter(s => /Cicle\d+/.test(s.getName()));
代替var sheets = ss.getSheets().filter(s => s.getName().slice( 0, len ) == search);
。