谷歌应用程序脚本上的getValue()和getDisplayValue()之间的差异

时间:2016-01-09 08:39:11

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

Google应用脚本上range.getDisplayValue()range.getValue()的区别是什么?

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var val1 = sheet.getRange(7,5).getDisplayValue();
var val2 = sheet.getRange(7,5).getValue();

Val1Val2都相同。

3 个答案:

答案 0 :(得分:12)

getDisplayValue返回您在屏幕中看到的值,因此始终是一个字符串,而getValue返回下面的值,因此是一个对象。如果范围中包含文本,则可以是字符串。

如果范围中包含数字或日期,则差异会更明显。特别是,如果电子表格区域设置使用逗号作为小数分隔符格式化数字,或者如果您在范围中设置自定义格式。

答案 1 :(得分:6)

为了向Henrique的解释添加更多内容,以下是我的经验示例。

我有一个列,我在IST输入时间

IST     
--------
2:00 AM 

当我使用

获取该列的值时
var myTime = range.getValue();

实际上已经返回,

Sat Dec 30 1899 01:36:40 GMT+0530 (IST)

但是range.getDisplayValue()解决了我的问题,它返回了我输入的内容,凌晨2点。

答案 2 :(得分:0)

详细说明已接受的答案。

根据官方文档。

getDisplayValue()

返回该范围内左上角单元格的显示值。的 值是一个字符串。显示的值考虑了日期,时间 和货币格式格式,包括应用的格式 自动通过电子表格的区域设置设置。空单元格返回 一个空字符串。

getValue()

返回该范围内左上角单元格的值。该值可能是 类型NumberBooleanDateString的类型,具体取决于 单元格的值。空单元格返回一个空字符串。

stackoverflow中的常见问题-用例:

  • 使用getValue时,工作表中的有效日期对象将返回日期对象,而使用string时将返回getDisplayValue(尊重格式)。
  • 使用TRUE时,Google表格(FALSEtrue)中的有效布尔值将返回falsegetValue布尔JavaScript对象,但使用时则返回字符串getDisplayValue。当您希望使用if条件时,这变得非常方便。如果if(sheet.getRange('A1').getValue())包含布尔值,则可以简单地使用对象本身A1