GASでスプレッドシートのセルに表示されている値を取得する方法徹底解説

Google Apps Script(GAS)を使ったスプレッドシート操作では、getDisplayValue()メソッドがとても役立つばい。これ、セルに表示されている値をそのまま取得できる機能なんよね。例えば、日付や通貨形式のデータをそのまんま扱いたい時に超便利なメソッドなんだけ。

スポンサーリンク

メソッドの基本的な使い方

まずは基本から押さえよう!getDisplayValue()って、簡単に言うと、セルに表示されてる値を文字列として取得するメソッドじゃ。これ、計算結果や書式設定済みのデータをそのまま取り出せるんよ。

const sheet = SpreadsheetApp.getActiveSheet();
const displayValue = sheet.getRange('A1').getDisplayValue();
console.log(displayValue); // これで表示されてる内容をそのまま取得

getValue()との違いは?

ここで気をつけたいのは、getDisplayValue()と似たようなメソッドであるgetValue()との違いばい。getValue()はセルに保存されてるデータ(例えば数値とか日付)をそのまま取り出すんやけど、getDisplayValue()は実際に画面に表示されてる内容、つまり書式設定された後のデータを取り出すんだよ。

例えば、日付の書式を変えて表示した場合、

const dateCell = sheet.getRange('B2');
console.log(dateCell.getValue()); // Dateオブジェクトで返される
console.log(dateCell.getDisplayValue()); // "2025/03/07"って表示される

この違いが、特に帳票やレポートを作る時に大事になってくるけん、覚えておくといいばい。

複数セルをまとめて取得する

範囲を一気に取得したいときもgetDisplayValues()が使えるんやけど、これは表示されてる値を二次元配列で返してくれるんだよね。これで、表全体のデータを取り出す時も便利なんよ。

const range = sheet.getRange('A1:C3');
console.log(range.getDisplayValues());
// [["1,000", "2025/03/07", "15,000"], ...]

実践での活用シーン

さて、実際にどんな場面でgetDisplayValue()を活かせるか、いくつかのケースを紹介するけん。

1. 日付データの処理

例えば、日付の形式が揃ってないと処理が面倒やけど、getDisplayValue()を使うと表示形式そのまま取り出せるから、帳票の出力にそのまま使えるんだよ。

function formatDates() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dateRange = sheet.getRange('D2:D10');
  const formattedDates = dateRange.getDisplayValues()
    .flat()
    .map(date => `日付: ${date}`);
  
  console.log(formattedDates);
  // ["日付: 2025/03/07", "日付: 2025/03/08", ...]
}

2. 数値の書式保持

通貨表示やパーセンテージをそのまま取得したい場合にも便利なんだよね。

const currencyCell = sheet.getRange('E5');
const rawValue = currencyCell.getValue(); // 数値 1500
const displayValue = currencyCell.getDisplayValue(); // "¥1,500"

3. 複合データの処理

商品リストとかで、書式が決まってるデータを一気に抽出したい時にも役立つよ。

function getProductList() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getRange('A2:D100').getDisplayValues();
  
  return dataRange.filter(row => row[3] !== '在庫切れ');
}

高度な使い方

getDisplayValue()をもっと応用して使いたい場合には、以下の方法も試してみてけ。

1. 正規表現を使ったデータの解析

表示されている値が特定のパターンに合っているかどうかチェックする時に正規表現を使うと便利じゃ。

function extractOrderNumbers() {
  const orderCells = sheet.getRange('B2:B100').getDisplayValues();
  const orderPattern = /ORDER-\d{4}-\d{6}/;
  
  return orderCells.flat()
    .filter(code => orderPattern.test(code));
}

2. 外部APIと連携

表示されたまんまのデータを外部のシステムに送信する時にも、getDisplayValue()を使って、書式を崩さずにデータを送ることができるんだよ。

function exportFormattedData() {
  const formattedData = sheet.getRange('A1:G50').getDisplayValues();
  const payload = {
    timestamp: new Date().toISOString(),
    data: formattedData
  };
  
  UrlFetchApp.fetch('https://api.example.com/import', {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload)
  });
}

パフォーマンスの最適化

大きなデータを扱う時には、getDisplayValues()を使って一気にデータを取って処理する方が効率的じゃけ、バッチ処理を使うとパフォーマンスがグッと良くなるばい。

function processLargeData() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const totalRows = sheet.getLastRow();
  const chunkSize = 1000;
  
  for (let i = 1; i <= totalRows; i += chunkSize) {
    const chunkRange = sheet.getRange(i, 1, chunkSize, sheet.getLastColumn());
    const chunkData = chunkRange.getDisplayValues();
    // データを処理するコード
  }
}

まとめ

getDisplayValue()メソッドは、スプレッドシートで表示されてるデータをそのまま取得する便利な機能ばい。日付や通貨、数値の書式を保持しつつデータを取り出せるから、帳票や外部システムとの連携に役立つよ。ただし、型に注意して処理を進めることが大事じゃけ、必要に応じて型変換を忘れんようにね。

コメント

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