所以这是一个之前提出过的问题,但有一点点不同:我需要根据该行中单元格中包含的值删除Google表格中的行。
问题是之前的答案我发现只有在值准确的情况下才允许我这样做。我有一个偶然出现的LET AGREED短语,但它也附带了单元格中的其他文本。我想删除出现LET AGREED短语的所有行。
我找到的两个非常接近的解决方案:
Delete a row in google spreadsheet base on value of cell in row
Delete a row in google spreadsheet base on contents of cell in row
任何帮助表示赞赏,我对Google Scripts并不满意!
答案 0 :(得分:2)
我认为你想在编辑某些东西时发生这种情况?可以将.search()方法称为字符串,以查看是否存在子字符串。如果是,则返回找到它的索引。如果未找到,则返回-1。
这是一个onEdit触发器,当工作表上的任何内容发生变化时,它会被调用。因此,文本" LET AGREED"保存在单元格中,该行将消失。
另外,如果您要复制并粘贴到此表单中的一系列数据,其中的单词是" LET AGREED"将出现在许多行中,它将能够处理删除所有这些行。
function onEdit(e) {
var ss = e.source;
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var values = range.getValues();
var rows_deleted = 0;
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
var value = values[i][j];
//row numbers are 1-based, not zero-based like this for-loop, so we add one AND...
//every time we delete a row, all of the rows move down one, so we will subtract this count
var row = i + 1 - rows_deleted;
//if the type is a number, we don't need to look
if (typeof value === 'string') {
var result = value.search("LET AGREED");
//the .search() method returns the index of the substring, or -1 if it is not found
//we only care if it is found, so test for not -1
if (result !== -1) {
sheet.deleteRow(row);
rows_deleted++;
}
}
}
}
};