检查工作表单元格是否包含错误

问题描述 投票:0回答:2

我正在使用此脚本功能来检查我在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 --;
        } 

      });
    });  
  }
}
javascript google-apps-script google-sheets google-sheets-api
2个回答
1
投票

尝试在函数中移动4个变量。 Apps脚本不支持全局变量。因此该函数无法识别var单元。

编辑:Detect formula errors in Google Sheets using Script


0
投票

问题

无法检查单元格是否有错误

说明

您面临的问题是简单的类型不匹配。 getRange()方法返回Range的实例,同时尝试将其与errorValues数组的成员进行比较,该数组由strings组成。因此,errorValues.includes(cell)将始终为false,因此将执行条件语句的第一个块。

解决方案>>

在范围上使用getValues(),它将返回一个二维值数组。如果您只对一行感兴趣(可能是),请将其提取出来并使用some(或every)方法在单元格上循环,进行相同的比较。

[Notes

  1. 关于在自定义函数中以及一般在GAS中使用全局变量。您可以使用它们,GAS环境是一个JavaScript运行时,带有一个方便层,可以简化Google API的使用,几乎所有在JS中有效的东西都在这里有效。话虽这么说,将全局变量当作不存在的变量对待-除非您确切地知道自己在做什么。
  2. 参考

  1. [getRange方法reference
  2. [getValues方法reference
  3. 自定义功能guide
  4. [MDN上的[every方法reference(请参见此处的some)]
© www.soinside.com 2019 - 2024. All rights reserved.