使用 Google 的基本教程代码可以很好地删除 GoogleSheets 中的重复项。但是,由于最大执行时间为 6 分钟,我遇到了具有数千行的较大电子表格的超时问题。我如何才能修改此代码以使用更大的电子表格?例如,如何设置从底部开始迭代的最大行数?
这是代码:
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = [];
for (var i in data) {
var row = data[i];
var duplicate = false;
for (var j in newData) {
if (row.join() == newData[j].join()) {
duplicate = true;
}
}
if (!duplicate) {
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
最佳答案
我相信你的目标如下。
- 您想删除重复的行。
- 您想使用 Google Apps 脚本实现这一目标。
- 您想降低脚本的处理成本。
在这种情况下,我认为 removeDuplicates()
可能会用于实现您的目标。示例脚本如下。
示例脚本:
function removeDuplicates() {
SpreadsheetApp.getActiveSheet().getDataRange().removeDuplicates();
}
或者,在这种情况下,也可以按如下方式使用 Sheets API。当上述脚本对您的情况没有用时,请测试以下脚本。使用Sheets API时,流程成本可以降低一点。 Ref在使用之前,请在 Advanced Gooele 服务中启用 Sheets API。
function removeDuplicates2() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const resource = { requests: [{ deleteDuplicates: { range: { sheetId: sheet.getSheetId() } } }] };
Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}
引用资料:
关于google-apps-script - Google Apps 脚本 - 删除大型电子表格中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67202956/