如何清除任何具有某些文本字符串的单元格?

时间:2018-03-09 13:25:52

标签: google-apps-script google-sheets

我有一个接收Google表单回复的电子表格。我想在formSubmit()上运行一些东西来梳理整个表单响应表,并清除文本字符串中具有特定值的所有单元格。

我到目前为止的代码如下。它运行,但不清除细胞。

function badData() {
    var file = SpreadsheetApp.openById("[spreadsheetstring]");
    var content = file.getSheetByName("Form Responses 1");
    return content.value ? (listBadWords(content.value) !== -1 ? content.range.clearContent() : null) : null;
}

function listBadWords(word) {
    var listEN = [
        'none', 'n/a', 'n.a'
    ];
    return listEN.indexOf(word);
}

非常感谢您提供的所有帮助/建议。

谢谢!

更新 在@ Liora的帮助下,以下工作非常有用:

function badMMData() {
    var file = SpreadsheetApp.openById("[spreadsheetstring]");
    var content = file.getSheetByName("Form Responses 1");
    var numRows = content.getLastRow();
    var numCols = content.getLastColumn();
    var range = content.getRange(1, 1, numRows, numCols);
    for (var i = 1; i <= numRows; i++) {
        for (var j = 1; j <= numCols; j++) {
            var currentValue = range.getCell(i, j).getValue().toString().toLowerCase();
            if (listBadWords(currentValue) !== -1)
                range.getCell(i, j).clear();
        }
    }
}

function listBadWords(word) {
    var listEN = [
        'none', 'n/a', 'n.a', 'na'
    ];
    return listEN.indexOf(word);
}

1 个答案:

答案 0 :(得分:1)

函数clear适用于精确范围,因此您需要循环电子表格的所有范围。类似的东西:

var numRows = content.getLastRow();
var numCols = content.getLastColumns();
var range = content.getRange(1, 1, numRows, numCols);
for (var i = 1; i <= numRows; i++) {
    for (var j = 1; j <= numCols; j++) {
       var currentValue = range.getCell(i,j).getValue();
       if(listBadWords(currentValue) !== -1)
           range.getCell(i,j).clear();
    }
}