【问题标题】:"Error parsing int value [#N/A]" when querying a Google Spreadsheet using CDATA使用 CDATA 查询 Google 电子表格时出现“解析 int 值时出错 [#N/A]”
【发布时间】:2021-08-19 19:36:29
【问题描述】:

我们正在尝试查询一个 Google 电子表格,其中包含一些带有 #N/A 的字段。

Google 电子表格中的#N/A 错误表明缺少信息并发出信号函数停止计算。

我们只想将这些 #N/A 值视为 NULL。

使用 Google 电子表格的 CData 连接器执行此操作的最佳方法是什么?

【问题讨论】:

    标签: google-sheets google-sheets-api cdata-drivers


    【解决方案1】:

    我认为将您的公式设置为 ifError 在您的电子表格中不是一个选项吗?这似乎是最明智的。例如,=iferror(vlookup(foo),) 返回 null 而不是 #N/A

    假设不是,这里有一个应用脚本,它可以检查您的数据并替换值,或者在电子表格中创建一个包含更新值的新工作表。

    function fixErrorsInSheet(_sh) {
      const errorValues = ["#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A"];
      if (_sh === undefined) {
        _sh = SpreadsheetApp.getActiveSheet();
      }
      const ss = _sh.getParent();
      var dataRange = _sh.getDataRange();
      var allValues = dataRange.getValues();
      for (var i = 0; i < allValues.length; i++) {
        for (var j = 0; j < allValues[i].length; j++) {
          var oneValue = allValues[i][j];
          if (errorValues.includes(oneValue)) {
            allValues[i].splice(j, 1, null);
          }
        }
      }
      //optional to update sheet, or you could query this array directly with cData;
      dataRange.setValues(allValues);
    
      //create new sheet with updated values...
      //ss.setActiveSheet(_sh);
      //var newSheet = ss.duplicateActiveSheet();
      //newSheet.getRange(1,1,dataRange.getLastRow(),dataRange.getLastColumn()).setValues(allValues);
    }
    
    //use this to run on all sheets
    function runFixOnAllWorkbooks() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      ss.getSheets().forEach(fixErrorsInSheet);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多