Google Apps Script

Google Apps Scriptでスプレッドシートのセルの値を表示形式の文字列で取得する方法

スポンサーリンク

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/24yyyy/mm/ddDate オブジェクト“2025/07/24”
1000“#,##0”1000“1,000”
=TODAY()日付形式Date“2025/07/24”

🔍 補足:数式そのものを取得したい場合は getFormula()、書式設定を取得したい場合は getNumberFormat() を使用します。


サンプルコード|表示形式の文字列を取得してログ出力する

基本コードとその解説

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/24yyyy/mm/dd“2025/07/24”

対策:スクリプトを使う前にセルに明示的な表示形式(例:yyyy/mm/dd)を設定しておくと、期待通りの結果になります。

getValueと混同してしまう

  • getValue() は「内部値」
  • getDisplayValue() は「表示されている文字列」

を取得します。

セルの表示形式が設定されていないとどうなる?

  • デフォルトの書式で表示された値が文字列として返されます
  • 明示的に表示形式を設定した方が、期待どおりの結果になります

空白セル・未入力セルの扱い

  • 空セルは空文字 "" として返されます
  • null や undefined ではありません

応用例|getDisplayValueの実務活用シーン

SlackやLINE通知に使う

表示形式のまま日付・数値を取得し、通知文にそのまま反映できます。

メール文面に直接差し込む

テンプレート本文に ${date} のような形式で差し込みたいときに便利です。

テンプレートPDFの差し込みデータに使う

HTMLテンプレートと組み合わせてレポートや見積書を生成する際に役立ちます。


よくある質問(FAQ)

Q
getDisplayValueで日付を特定フォーマットで取得できる?
A

セルに書式(例:yyyy/mm/dd)を設定しておけば、その通りの文字列が返されます。

Q
文字列と数値で挙動は違う?
A

数値も文字列に変換されて返されるため、常に String 型として扱われます。

Q
getDisplayValueで書式は取得できる?
A

書式は取得できません。書式は getNumberFormat() を使って取得します。

Q
数式が入っているセルも使える?
A

はい、数式の結果が表示されていれば、それが文字列として返されます。


まとめ|単一セルの表示値取得ならgetDisplayValueが便利!

  • getDisplayValue() を使えば、セルの表示どおりの文字列を取得できる
  • getValue() との違いに注意し、目的に応じて使い分ける
  • ログ出力や通知、テンプレートへの差し込みなど実務でも活用場面多数

Googleスプレッドシートの「見たままの値」を取得したいときは、ぜひこのメソッドを活用してみてください。

タイトルとURLをコピーしました