Google脚本,用于选择Google表格中的行并清除内容

时间:2019-07-17 19:51:18

标签: google-apps-script google-sheets

我想尝试清除准备删除的行,这些行包含Google表格中的特定单词,我遇到的问题是删除行1到1的脚本,如果您有很多行,可能要花很长时间进行搜索,如果我可以仅突出显示所有这些行并清除数据(如果该行可以保留特定单词的话),那将会更快,因为我之后可以对数据进行排序

function deleteRows() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var s = ss.getSheetByName('Copy of TBC Sort');
 var r = s.getRange('C3:C400');
var v = r.getValues();
for(var i=v.length-1;i>=0;i--)
 if(v[0,i]=='Delete Row')
  s.deleteRow(i+1);
 };

3 个答案:

答案 0 :(得分:2)

您可以改用clearContent()。有关更多详细信息,请访问Apps脚本网站here

显示的示例是

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:D10");
range.clearContent();

答案 1 :(得分:1)

目标:

如果数据包含“删除行”,则删除行。


脚本:

loc

我已经使用function findAndDeleteRow() { var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Copy of TBC Sort'); var r = s.getRange('C3:C400'); var find = r.createTextFinder('Delete Row').findAll().reverse(); if (find.length > 0) { for (i = 0; i < find.length; i++) { s.deleteRow(find[i].getRow()); } } } 来查找包含字符串“ Delete Row”的每一行(这比循环遍历一组值比较每一行要快)。这会将所有范围推入createTextFinder()中的数组。然后,我们使用var find反转数组,以便从下至上删除行。我加入了reverse()语句只是为了检查数组中是否有要处理的项目,然后我们有一个if循环遍历数组中的每个项目,并将行传递给{ {1}}。

注意:请确保您的 for 在电子表格中是有效范围,否则 deleteRow() 将挂起。


参考文献:

答案 2 :(得分:1)

以马里奥所说的为基础,最快的方法是复制数据,清除范围并粘贴所需的数据

function deleteRows() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var s = ss.getSheetByName('Copy of TBC Sort');
var data = s.getDataRange().getValues();
var results = [];
for(var i=v.length-1;i>=0;i--)
 if(data[0,i]=='Delete Row') continue;//skips these rows
 result.push(data[i]);
 };
s.getDataRange().clear();
s.getRange(1, 1,results.length, results[0].length).setValues(results);
}

删除行时间太长