Google Apps Script

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

スポンサーリンク

Google Apps Script (GAS) で Google スプレッドシートの値を取得したときに、日付や数値が「ユーザーが表示で見ている値」と違うことに戸惑ったことはありませんか?

この問題を解決するのが getDisplayValues() メソッドです。
表示形式のままの文字列として値を取得することができます。


getDisplayValuesとは?|表示形式のまま値を取得する方法

getValues()との違いとは?

getValues() はセルの内部値をデータ型として取得します。
たとえば日付なら Date オブジェクトで返されます。

一方、getDisplayValues() はスプレッドシートで実際に表示されている文字列を取得します。
日付なら “2025/07/24″、金額なら “\u00a51,000” といった表示形式がそのまま反映されます。

getDisplayValue()との違い(単一セルとの比較)

単一セルの場合は getDisplayValue() (単数形) を使用します。
複数セルの場合は getDisplayValues() (複数形) を使い、返り値は2次元配列となります。


getDisplayValues()の構文と戻り値の詳細

基本構文

Range.getDisplayValues()

引数なしで使用でき、対象範囲のすべてのセルの表示形式に従った文字列が2次元配列で返されます。

戻り値の型と内容

  • String[][]
  • 内容:スプレッドシート上のセルに表示されている通りの文字列
  • 注意点:1セルだけでも [[]] の形式で返される

利用例(表示値の取得パターン)

  • 日付 → "2025/07/24"
  • 金額 → "\u00a51,000"
  • パーセント → "75%"

💡 中級者向け補足:getFormulas() で数式を、getNumberFormats() で書式を同時に取得すれば、セルの値・数式・表示形式のすべてを並列管理できます。


サンプルコード|表示形式のまま複数セルの値を取得する

function sample() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getActiveSheet();
  const displayValues = sheet.getRange("A2:C5").getDisplayValues();

  for (let i in displayValues) {
    const row = displayValues[i];
    for (let j in row) {
      Logger.log(row[j]);
    }
  }
}

このコードの解説ポイント

  • getDisplayValues() は2次元配列(行×列)として返される
  • for...in ループで行と列をネストして表示値を取り出す
  • 通常の getValues() と置き換え可能で、表示値を取得するケースに最適

よくあるエラーと注意点

getValues() と間違える

  • getValues() はデータ型オブジェクト(Date/Numberなど)
  • getDisplayValues() は文字列で表示内容を取得

書式が適用されていないと想定外の結果になる

  • セルに表示形式(例:日付フォーマット)が設定されていないと、整数のままなど期待と異なる文字列が返される

空セルの扱いに注意

  • 値が空の場合、空文字(””)として返されるため、空判定には注意が必要

応用例|getDisplayValuesを使う場面

JSON・CSV出力で表示値を保つ

システム間連携時に、文字列として見た目通りのデータを保持してエクスポートする用途に適しています。

Slack通知やメール送信で見た目重視の値を使いたい

日付や金額など、読みやすい表示で通知文面を作成できます。


よくある質問 (FAQ)

Q
getDisplayValues()は1セルだけにも使えますか?
A

はい、使えます。ただし返り値は [["値"]] の2次元配列になります。1つの文字列だけが欲しい場合は getDisplayValue() を使うと便利です。

Q
日付を yyyy/mm/dd の形式で取得するには?
A

セル側で表示形式を “yyyy/mm/dd” に設定し、getDisplayValues() を使用すれば表示どおりに取得できます。

Q
数式の結果だけを取得したい
A

getDisplayValues() は数式の計算結果を取得します。数式そのものを取得したい場合は getFormulas() を使用してください。

Q
値の取得時に書式が反映されない
A

セルに明示的な表示形式が設定されていない場合、期待した形で取得されないことがあります。必要に応じて setNumberFormat() を使って事前に設定しておくとよいでしょう。

まとめ

  • 表示形式に従った値を取得するには getDisplayValues() を使う
  • 戻り値は必ず2次元配列である点に注意
  • getFormulas()getNumberFormats() と組み合わせれば、値・数式・書式を同時に扱える
  • 実務ではPDF生成やSlack通知など「見た目重視」の出力に非常に有効

ユーザーにとって視認性の高い値をそのまま取得できる getDisplayValues() は、GASを活用した自動化において重要なメソッドです。ぜひ活用してみてください。

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