我在这个脚本上有一个超过3000行和24列以上的电子表格。
当我执行这个脚本时,它在第一分钟运行正常,然后它就停止工作了。
我刷新电子表格,然后再次运行脚本。之前删除的行已消失,它将再次开始执行。
几秒钟后,删除了几行,它表示脚本已完成,但我清楚地看到更多行,其中包含单词Kitten。
如果我再次运行该脚本,它将使用单词Kitten删除更多行。然后它会说脚本已经完成了,当清楚地说,在单元格中有更多行有单词Kitten。
我必须一遍又一遍地运行脚本以最终删除所有实例。
此电子表格包含大量数据,包括查询,支点,导入范围,例如
也许这是一个尺寸问题?
Gaaps脚本是否有意用于这么大的文件? (3000行,每行有24列数据)。
如果是这样,有什么方法可以优化?也许是一种使用鼠标在选定范围内使用UI运行脚本的方法?
function deleteRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('DataSheet');
var values = s.getDataRange().getValues();
for (var row in values)
if (values[row][3] == 'Kittens')
s.deleteRow(parseInt(row)+1);
};
答案 0 :(得分:0)
您可能超过了脚本运行时,请参阅Quotas。想一想解决问题的方法。 您要完成的工作不是删除包含“小猫”一词的行,而是删除不包含“小猫”的范围值。
function filterDataRange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('DataSheet');
var range = s.getDataRange();
// Get row and column of first cell in range
var firstRow = range.getRow();
var firstCol = range.getColumn();
var values = range.getValues();
// Filter values in column 4 using a custom function
values = values.filter(filterKittenInCol4);
// Clear data range
range.clear();
/* Get the filtered data range:
- first cell is the same as the old range
- values.length = numRows
- values[0].length = numColumns
and set the values */
s.getRange(firstRow, firstCol, values.length, values[0].length).setValues(values);
};
function filterKittenInCol4(e) {
return e[3] != 'Kittens';
};