こんにちは、もり(moripro3)です!
いつものようにTwitterをながめていたら良い情報を入手したので、備忘録として残しておきます。
「スプレッドシートに入力されている日付」をGASで扱うとき、苦労したことはありませんか?
たとえば、A1セルの日付をgetValueメソッドで取得すると、
なが~い文字列になってしまう・・・
Fri Apr 02 2021 00:00:00 GMT+0900 (Japan Standard Time)
GAS(JavaScript)では、日付がオブジェクトとして扱われるためです。
getDisplayValueメソッドを紹介するね!
セルの表示値を取得するgetDisplayValueメソッド
getDisplayValueメソッドは、「セルの表示値」を、そのまま「文字列」として取得します。
rangeオブジェクト.getDisplayValue()
- パラメータ:なし
 - 戻り値:string
 - 説明:範囲内の左上のセルの表示値を返します。値は文字列です。
 - 公式リファレンスはこちら
 
「getValueメソッド」と「getDisplayValueメソッド」の実行結果を比べてみましょう。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						function myFunction() {   const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");   const range = sheet.getRange("A1");   const value1 = range.getValue();   console.log(value1);   console.log(typeof value1); //object   const value2 = range.getDisplayValue();   console.log(value2);   console.log(typeof value2); //string }  | 
					
実行結果です。getDisplayValueメソッドでは、セルの表示値”2021/04/02″が取得できています。データ型はstring(文字列)です。
複数範囲を取得するgetDisplayValuesメソッド
複数セルの値を取得したいときは「getDisplayValuesメソッド」を使います。返り値は二次元配列です。
以下5つの値は、表示は異なりますが、すべて “2021/04/02” が入力されています。
「getValuesメソッド」と「getDisplayValuesメソッド」の実行結果を比べてみましょう。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13  | 
						function myFunction() {   const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");   const range = sheet.getDataRange();   const value1 = range.getValues();   console.log(value1);   const value2 = range.getDisplayValues();   console.log(value2); }  | 
					
実行結果です。
①getValuesメソッドはすべて同一の値が取得されますが、②getDisplayValuesメソッドは、セルの表示値がそのまま取得できています。
【まとめ】「入力値の取得」と「表示値の取得」
スプレッドシートのセルの値の取得メソッドを紹介しました。
- 入力値の取得 → getValue(s)メソッド
 - 表示値の取得 → getDisplayValue(s)メソッド
 
| 入力値の取得 | 表示値の取得 | |
|---|---|---|
| 単一セル | getValueメソッド | getDisplayValueメソッド | 
| 複数セル | getValuesメソッド | getDisplayValuesメソッド | 
日付の処理をするときに役立つので、ぜひ覚えておきましょう!
								

							
							
							
															
							
							
							
															
							
							
							
															
										
					
									