【问题标题】:Google Scripts Returning Not a Number谷歌脚本返回不是数字
【发布时间】:2016-08-01 03:46:23
【问题描述】:

我已经在 Google Scripts 上工作了一段时间,但我似乎无法找到解决问题的方法。我想要做的是将电子表格中两个单元格的内容与我的函数calculateRates() 相乘。这是我的代码:

/** 
@customFunction
*/
function calculateRates(hourDecimal, personRate) {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); //Access spreadsheet
  var sheet = ss.getSheets()[0];  //Access sheet

  var range = sheet.getDataRange(); //Access all cells

  var values = range.getValues(); //Call to get value of certain cell

  var totalEarned = hourDecimal * personRate;
  Logger.log(totalEarned);

  return totalEarned;
}

它的问题是,在我指定两个单元格相乘作为电子表格上函数的参数后,出现“结果不是数字”的错误。我知道我的电子表格上的功能正确,所以这不是问题.....有什么想法吗?感谢您的帮助!

【问题讨论】:

  • 您是从电子表格 UI 调用函数吗?例如在您键入“=calculateRates(B1,C1)”的单元格中?此外,您只是将设置为参数的单元格相乘,您真的不使用函数的前 4 行还是有更多代码?最后这些值是手动输入的还是由于某些功能而产生的?
  • 是的,我正在从电子表格中调用该函数。还有更多代码,但在一个单独的函数中可以正常工作,但这个函数我遇到了麻烦。对不起,我是初学者,所以我不知道我是否必须回忆我认为的所有电子表格对象。至于值,一个值是手动输入的,另一个是函数的结果。

标签: javascript google-apps-script google-sheets spreadsheet google-apps


【解决方案1】:

当您尝试使用并非全是数字的值(例如数字和字符串)执行计算时会发生此错误。

Google 表格根据单元格的值存储数据,这些值的类型可能为 NumberBooleanDateString(空单元格将返回空字符串)。当Custom Functions 使用这些值时,Apps 脚本会将它们视为 JavaScript 中的适当数据类型。

您需要确保单元格的值是数字,考虑到如果单元格包含一些空格或其他非数字字符,例如 "2 2""3/2",它将被视为字符串,您将需要在任何计算之前修剪或提取这些特殊字符。

【讨论】:

  • 似乎现在正在工作.....将单元格的内容转换为浮点数,这就是诀窍。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多