いつものように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メソッド |
日付の処理をするときに役立つので、ぜひ覚えておきましょう!