我正在使用 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;
}
}
}
}
如果要检查单元格或范围的数字格式,可以使用
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 == ""){
如果你正在寻找
sheet function
看看ISNUMBER()
,它似乎知道文本是否可以转换为数字。
如果你是js
the
代码:
if (isNaN(parseFloat(your_data))==false)
似乎可以检测是否可以将
string
转换为 number
。