Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between getValue() and getDisplayValue() on google app script

What is the difference of range.getDisplayValue() and range.getValue() on Google Apps Script?

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

Val1 and Val2 are both same.

like image 234
iJay Avatar asked Jan 09 '16 08:01

iJay


People also ask

What is the difference between getdisplayvalue and getValue?

For example you could have a country dial code field with a display value of "Sri Lanka" and a value of "94". getDisplayValue returns the value as you see in the screen, therefore always a string, while getValue returns the value underneath, therefore an object. Which may be a string if the range has text in it.

What are the different types of values in Apps Script?

Every value in Apps Script has a type. There are six types and they are: number, string, boolean, function, object and undefined. Operators are used to perform operations on values.

How to prevent apps scripts from converting types when comparing values?

To prevent Apps Script from converting types when comparing values, use the strict equality operator (===) or the strict inequality operator (!==). Logical operators operate on boolean values with the result also being a boolean value.

How to get boolean values in Google sheets using JavaScript?

A valid boolean value in google sheets ( TRUE, FALSE) would return true, false boolean JavaScript objects when using getValue but strings when using getDisplayValue. This becomes quite handy when you want you use if conditions. You can simply use the object itself if (sheet.getRange ('A1').getValue ()) if A1 contains a boolean value.


2 Answers

getDisplayValue returns the value as you see in the screen, therefore always a string, while getValue returns the value underneath, therefore an object. Which may be a string if the range has text in it.

The difference is more clear if the range has numbers or dates in it. Specially if the spreadsheet locale formats the numbers with commas as decimal separators or if you set custom formats in your ranges.

like image 180
Henrique G. Abreu Avatar answered Oct 18 '22 19:10

Henrique G. Abreu


To add more to Henrique's explanation, here is an example from my experience.

I have a column where I enter time in IST

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

And when I get the value of that column using,

var myTime = range.getValue();

which actually returned,

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

But range.getDisplayValue() solved my problem which returned what I have entered, 2:00 AM.

like image 10
skay Avatar answered Oct 18 '22 17:10

skay