我正在使用此脚本功能来检查我在Google工作表中的单元格功能是否有任何错误。
这里是代码,但似乎没有用。当我在单元格中出现错误时,它会一直说没有错误
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourcename = "Sheet1";
var source = ss.getSheetByName(sourcename);
var cell = source.getRange("A1:AG30");
function isError2(cell) {
const errorValues = ["#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A","#ERROR!"];
if (errorValues.includes(cell) != true) {
Logger.log("no error");
} else{
Logger.log("some error");
}
}
更新
function isError2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourcename = "Sheet1";
var source = ss.getSheetByName(sourcename);
var cell = source.getRange("A1:AG30");
const errorValues = ["#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A","#ERROR!"];
if (errorValues.includes(cell) != true) {
Logger.log("no error");
} else{
Logger.log("some error");
}
}
Update 2.0更新了方法,但仍然无法获得所需的输出
var mysheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
var sheet1 = SpreadsheetApp.setActiveSheet(mysheet);
function findErrors(sheet) {
const errorValues = ["#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A","#ERROR!"];
var singleSheetArray = [];
var name = sheet1.getName();
// how many cells in the sheet currently
var maxRows = sheet1.getMaxRows();
var maxCols = sheet1.getMaxColumns();
var totalCells = maxRows * maxCols;
// how many cells have data in them
var r = sheet1.getLastRow();
var c = sheet1.getLastColumn();
var data_counter = r * c;
if (data_counter !== 0) {
var dataRange = sheet1.getRange(1,1,r,c);
var dataValues = dataRange.getValues();
dataValues.forEach(function(row) {
row.forEach(function(cell) {
if ((errorValues.indexOf(cell) !=0) && (!(errorValues.indexOf(cell) > 0)) ) {
SpreadsheetApp.getUi().alert("no errors");
data_counter --;
}
});
});
}
}
尝试在函数中移动4个变量。 Apps脚本不支持全局变量。因此该函数无法识别var单元。
问题
无法检查单元格是否有错误
说明
您面临的问题是简单的类型不匹配。 getRange()
方法返回Range
的实例,同时尝试将其与errorValues
数组的成员进行比较,该数组由strings组成。因此,errorValues.includes(cell)
将始终为false
,因此将执行条件语句的第一个块。
解决方案>>
在范围上使用getValues()
,它将返回一个二维值数组。如果您只对一行感兴趣(可能是),请将其提取出来并使用some
(或every
)方法在单元格上循环,进行相同的比较。
[Notes
参考