我有一个接收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);
}
答案 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();
}
}