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

时间:2015-02-19 05:54:55

标签: google-apps-script google-spreadsheet-api

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

我找不到像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;
      }
    }
  }
};

2 个答案:

答案 0 :(得分:2)

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

Google Documentation - getNumberFormats()

如果您想要评估代码中数据的数据类型,可以使用typeof()

Mozilla JavaScript Documentation - typeof

在某些情况下,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 == ""){

答案 1 :(得分:1)

如果您正在寻找sheet functionISNUMBER(),那么它似乎知道文本是否可以转换为数字。

如果您使用的是the代码:

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

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