Google Apps Script(GAS)でスプレッドシートのセルから値を取得しようとすると、「思っていた表示と違う!」という経験はありませんか?
たとえば、日付を取得したのに「Thu Jul 25 2025 00:00:00 GMT+0900 (Japan Standard Time)」という形式になったり、通貨やパーセントが数値に戻ってしまうことがあります。
そんなときに便利なのが getDisplayValue() メソッドです。
この記事では、セルに表示されている通りの文字列を取得する方法をわかりやすく解説します。
getDisplayValueとは?|セルの表示形式の値を取得する方法
getValue()との違いとは?
getValue() はセルの内部値をそのまま取得します。
日付は Date オブジェクト、数値は Number 型として返されます。
しかし、見た目通りの文字列として取得したい場合は getDisplayValue() を使う必要があります。
getDisplayValues()との違い(複数セルとの比較)
getDisplayValue():単一セル用 →String型で返すgetDisplayValues():複数セル用 →String[][]型で返す
複数セルの取得方法は、以下の記事をご覧ください:
どんなときに使うべきか?
- 日付や金額をそのままメール本文に入れたい
- 書式付きでログに出力したい
- ユーザー向けのレポートや通知を作成したい
getDisplayValue()の構文と戻り値の仕様
構文の書き方
Range.getDisplayValue()
対象のセルに対してこのメソッドを実行するだけで、表示形式に従った文字列を取得できます。
返り値の型と注意点(常に文字列)
- 戻り値の型は
String(文字列) - 数値・日付・数式の結果など、すべて見た目通りに変換された文字列として返されます
取得できるデータの例
| セルの値 | 表示形式 | getValue()の返り値 | getDisplayValue()の返り値 |
|---|---|---|---|
| 2025/07/24 | yyyy/mm/dd | Date オブジェクト | “2025/07/24” |
| 1000 | “#,##0” | 1000 | “1,000” |
| =TODAY() | 日付形式 | Date | “2025/07/24” |
サンプルコード|表示形式の文字列を取得してログ出力する
基本コードとその解説
function sample() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getActiveSheet();
const displayValue = sheet.getRange("A2").getDisplayValue();
Logger.log(displayValue);
}
- A2セルの表示値を文字列で取得
Logger.log()でログに出力
フォーマット例と実際のログ出力
セル A2 に「2025年7月24日」と表示されている場合:
getValue():Dateオブジェクト(日時形式)getDisplayValue():"2025年7月24日"(文字列)
getFormulasやgetNumberFormatとの併用(中級者向け補足)
const range = sheet.getRange("A2");
const value = range.getDisplayValue();
const formula = range.getFormula();
const format = range.getNumberFormat();
これにより、値・数式・書式を同時に取得可能です。
よくあるエラーと注意点
表示形式が崩れる例(落とし穴)
セルに表示形式が設定されていない場合、getDisplayValue() でも予期しない見た目の値が返ってくることがあります。
たとえば日付が入力されているにもかかわらず、「45123」などのシリアル値が返るケースです。これはスプレッドシートが日付を内部的にシリアル値で保持しており、書式が「標準」のままだとそのまま出力されるためです。
🧪 例:書式設定がない場合
| セルの値 | 表示形式 | getDisplayValue() の返り値 |
|---|---|---|
| 2025/07/24 | 標準 | “45123” |
| 2025/07/24 | yyyy/mm/dd | “2025/07/24” |
getValueと混同してしまう
getValue()は「内部値」getDisplayValue()は「表示されている文字列」
を取得します。
セルの表示形式が設定されていないとどうなる?
- デフォルトの書式で表示された値が文字列として返されます
- 明示的に表示形式を設定した方が、期待どおりの結果になります
空白セル・未入力セルの扱い
- 空セルは空文字
""として返されます - null や undefined ではありません
応用例|getDisplayValueの実務活用シーン
SlackやLINE通知に使う
表示形式のまま日付・数値を取得し、通知文にそのまま反映できます。
メール文面に直接差し込む
テンプレート本文に ${date} のような形式で差し込みたいときに便利です。
テンプレートPDFの差し込みデータに使う
HTMLテンプレートと組み合わせてレポートや見積書を生成する際に役立ちます。
よくある質問(FAQ)
- QgetDisplayValueで日付を特定フォーマットで取得できる?
- A
セルに書式(例:yyyy/mm/dd)を設定しておけば、その通りの文字列が返されます。
- Q文字列と数値で挙動は違う?
- A
数値も文字列に変換されて返されるため、常に
String型として扱われます。
- QgetDisplayValueで書式は取得できる?
- A
書式は取得できません。書式は
getNumberFormat()を使って取得します。
- Q数式が入っているセルも使える?
- A
はい、数式の結果が表示されていれば、それが文字列として返されます。
まとめ|単一セルの表示値取得ならgetDisplayValueが便利!
getDisplayValue()を使えば、セルの表示どおりの文字列を取得できるgetValue()との違いに注意し、目的に応じて使い分ける- ログ出力や通知、テンプレートへの差し込みなど実務でも活用場面多数
Googleスプレッドシートの「見たままの値」を取得したいときは、ぜひこのメソッドを活用してみてください。





