删除重复工作表
识别并删除电子表格中的重复工作表。
(function()
{
let sheets = Api.GetSheets();
let numSheets = sheets.length;
// 辅助函数:比较两个工作表内容是否完全相同
function areSheetsEqual(sheet1, sheet2) {
let rangeVal1 = sheet1.GetUsedRange().GetValue();
let rangeVal2 = sheet2.GetUsedRange().GetValue();
// 如果已用区域尺寸不同,直接返回 false
if (rangeVal1.length !== rangeVal2.length || rangeVal1[0].length !== rangeVal2[0].length) {
return false;
} else {
// 比较每个单元格的值
for (let row = 0; row < rangeVal1.length; row++) {
for (let col = 0; col < rangeVal1[row].length; col++) {
if (sheet1.GetRangeByNumber(row, col).GetValue() !== sheet2.GetRangeByNumber(row, col).GetValue()) {
return false;
}
}
}
}
// 两个工作表完全相同
return true;
}
// 两两比较工作表,删除重复项
for (let i = 0; i < numSheets; i++) {
let sheet1 = sheets[i];
for (let j = i + 1; j < numSheets; j++) {
let sheet2 = sheets[j];
// 如果是重复工作表,则删除
if (areSheetsEqual(sheet1, sheet2)) {
sheet2.Delete();
}
}
}
})();
使用方法:获取工作表,获取已使用范围,获取值,按编号获取范围,删除
结果