如何在谷歌电子表格中检查单元格的类型

How to check the type of cell in google spreadsheet?

本文关键字:检查 单元格 类型 电子表格 谷歌      更新时间:2024-01-09

我使用的是谷歌脚本,我想检查一个单元格的类型,如果它是字符串,如果是数值。做点别的。

我找不到像isString或isText这样的函数。

这是我的代码,typeof没有检测到单元格包含数字

function Results() {
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
  var pred = activeSheet.getSheetByName("Copy of Predictions");
  var real = activeSheet.getSheetByName("16 Results");

  var realRes = real.getRange("B7:B61");
  var realVal = realRes.getValues();
  var cell, cellValue, row, col;
  for(col=2;col<16;col++){
    var predRes = pred.getRange(7, col, realVal.length);
    var predVal = predRes.getValues();
    for(row=0;row<predVal.length;row++){
      if(predVal[row] == ""){
        continue;
      }else if(typeof predVal[row] === "number"){
                if((predVal[row][0] == realVal[row][0]) && (predVal[row+1][0] == realVal[row+1][0])){
          cell = pred.getRange(col, 3);
          cellValue = cell.getValue();
          cell.setValue(cellValue + 15);
        }else{
          if(((predVal[row][0] - predVal[row+1][0]) < 0) && ((realVal[row][0] - realVal[row+1][0]) < 0)){
            cell = pred.getRange('B3');
            cellValue = cell.getValue();
            cell.setValue(cellValue + 5);
          }else if(((predVal[row][0] - predVal[row+1][0]) > 0) && ((realVal[row][0] - realVal[row+1][0]) > 0)){
            cell = pred.getRange('B3');
            cellValue = cell.getValue();
            cell.setValue(cellValue + 5);    
          }else if(((predVal[row][0] - predVal[row+1][0]) == 0) && ((realVal[row][0] - realVal[row+1][0]) == 0)){
            cell = pred.getRange('B3');
            cellValue = cell.getValue();
            cell.setValue(cellValue + 5);    
          }
        }
        row++;
      }else{
        continue;
      }
    }
  }
};

如果要检查单元格或范围的数字格式,可以使用getNumberFormat()getNumberFormats()方法。注意:一个末端有一个"s",另一个没有。第二个是多个单元格格式的二维数组。如果只想检查一个单元格,请使用单数形式。该方法适用于范围,因此您首先需要获得对要检查的单元格或范围的引用。

谷歌文档-getNumberFormats()

如果您想在代码中计算数据的数据类型,可以使用typeof()

Mozilla JavaScript文档-类型

在某些情况下,JavaScript会根据使用情况将一种数据类型强制转换为另一种。

即使名称是"getNumberFormats()",您仍然可以检查文本。但是为文本返回的值是一个空字符串。您可以使用此测试函数来验证单元格的数字格式是否设置为纯文本格式。

function test() {
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
  var theRange = activeSheet.getRange("A2");
  var theType = theRange.getNumberFormat();
  Logger.log(theType);
  if (theType === "") {
    Logger.log("It's text");
  };
};

您的代码如下:

}else if(predVal[row].getNumberFormat == "number"){

应为:

}else if(predVal[row].getNumberFormat == ""){

如果您正在查找sheet function,请查看ISNUMBER(),它似乎知道文本是否可以转换为数字。

如果你在js the代码:

if (isNaN(parseFloat(your_data))==false)

似乎可以检测是否可以将string转换为number