如何检查Google表格中的单元格类型?

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

我正在使用 Google 脚本,我想检查单元格的类型,如果它是字符串,则执行某些操作,如果是数值,则执行其他操作。

我找不到像

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;
      }
    }
  }
}
javascript google-apps-script google-sheets typechecking
2个回答
2
投票

如果要检查单元格或范围的数字格式,可以使用

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

Google 文档 - getNumberFormats()

如果您想在代码中评估数据的数据类型,您可以使用

typeof()

Mozilla JavaScript 文档 - 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
投票

如果你正在寻找

sheet function
看看
ISNUMBER()
,它似乎知道文本是否可以转换为数字。

如果你是js

the
代码:

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

似乎可以检测是否可以将

string
转换为
number

© www.soinside.com 2019 - 2024. All rights reserved.