1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GAS getDisplayValues()で表示値を一括取得!高速処理の鉄則を解説

GAS getDisplayValues()で表示値を一括取得!高速処理の鉄則を解説

GAS getDisplayValues()で表示値を一括取得!高速処理の鉄則を解説

Google Apps Script (GAS) でスプレッドシートのデータを扱う際、日付や通貨などのフォーマットを維持したまま、しかも高速に値を取得したい場面は非常に多いです。そんな時に絶大な効果を発揮するのが getDisplayValues() メソッドです。

この記事では、getDisplayValues() を使って複数セルの表示値を一括で取得する方法に焦点を当て、その基本からパフォーマンスの重要性、実践的なデータ加工テクニックまでを詳しく解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

getDisplayValues() とは? - 見たままの値をまとめて取得

getDisplayValues() は、指定した範囲のセルに表示されている値(表示値)を、そのままのフォーマットで二次元配列として一括で取得するメソッドです。

getValue() がセルの内部的な値(例: 1000)を取得するのに対し、getDisplayValues() は表示されている文字列(例: "¥1,000")を取得します。レポート作成や外部連携など、見た目が重要なデータを効率的に扱いたい場合に最適です。

メソッド取得範囲取得できる値データ型
getValues()複数セル内部的な元の値二次元配列 (数値, Date等)
getDisplayValues()複数セル画面に見えている表示値二次元配列 (文字列)

なぜ getDisplayValues() を使うべきか?パフォーマンスの重要性

複数セルの値を取得する際、for ループの中で getDisplayValue() (単数形) を何度も呼び出すのは最悪のアンチパターンです。

// 【非推奨】遅いコードの例
function slowMethod() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange("A1:B100");
  const values = [];
  for (let i = 1; i <= 100; i++) {
    const rowValues = [];
    for (let j = 1; j <= 2; j++) {
      // ループのたびにAPI呼び出しが発生し、非常に遅い
      rowValues.push(range.getCell(i, j).getDisplayValue());
    }
    values.push(rowValues);
  }
  return values;
}

// 【推奨】高速なコードの例
function fastMethod() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange("A1:B100");
  // API呼び出しは1回だけ!
  const values = range.getDisplayValues();
  return values;
}

スプレッドシートへのアクセス(API呼び出し)は、回数が増えるほどスクリプトの実行時間が長くなります。getDisplayValues() を使えば、この呼び出しがたった1回で済むため、処理が劇的に高速になります。

getDisplayValues() の使い方とデータ加工

基本的な使い方

getRange() で取得した範囲に対してメソッドを呼び出すだけで、表示値が格納された二次元配列が返ってきます。

function fetchDisplayValues() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('売上データ');
  // A1からC10までの範囲を指定
  const range = sheet.getRange('A1:C10');
  // 指定範囲の表示値を一括取得
  const displayValues = range.getDisplayValues();
  
  // 取得した二次元配列をログに出力
  console.log(displayValues);
}

実践テクニック:取得した配列を加工する

getDisplayValues() で取得したデータは、そのままでは使いにくいことがあります。filtermap といった配列メソッドを組み合わせることで、必要なデータだけに整形できます。

▼ 在庫がある商品データだけを抽出し、オブジェクトの配列に変換する

function processSalesData() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getDataRange(); // シート全体のデータを取得
  const values = range.getDisplayValues();
  
  const header = values.shift(); // 1行目(ヘッダー)を取り出す
  
  const salesObjects = values
    .filter(row => row[2] !== '0') // 在庫数(3列目)が'0'でない行だけをフィルタリング
    .map(row => {
      // 配列を扱いやすいオブジェクトに変換
      return {
        productName: row[0], // 商品名
        price: row[1],       // 価格 (例: "¥1,500")
        stock: row[2],       // 在庫数
        lastUpdated: row[3]  // 最終更新日 (例: "2025/12/25")
      };
    });
    
  console.log(salesObjects);
  /*
    実行結果の例:
    [
      { productName: 'リンゴ', price: '¥150', stock: '10', lastUpdated: '2025/12/25' },
      ...
    ]
  */
}

このように加工することで、JSONとして外部APIに送信したり、別のシートに書き出したりするのが非常に楽になります。

注意点:すべてが「文字列」になる

getDisplayValues() を使う上で最も重要な注意点は、取得した値がすべて文字列型になることです。

  • 計算ができない: "¥1,500" のような文字列はそのままでは計算に使えません。計算が必要な場合は、getValues() を使うか、文字列から不要な文字を削除して数値に変換する処理が必要です。
  • 空のセルは空文字 '': getValues() では空のセルは null ではありませんが、getDisplayValues() では空文字列 '' として取得されます。

まとめ

getDisplayValues() は、スプレッドシートの表示値を効率的に扱うための必須メソッドです。

  • パフォーマンスが命: 複数セルの値を取得する際は、必ず一括取得を心がける。
  • 見た目を維持: レポート作成や通知など、フォーマット済みのデータが欲しい場合に最適。
  • データ加工とセットで: mapfilter と組み合わせることで、データの価値がさらに高まる。
  • 文字列型を意識: 取得した値で計算する場合は、型変換が必要。

これらのポイントを押さえて、GASでのデータ処理をより高速でスマートなものにしましょう。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Class Range | Apps Script | Google for Developers

セルの表示値を取得する | getDisplayValue()【GAS】 – はじりつ

関連記事

【GASスプレッドシート】getValues()で複数セルデータを高速一括取得・SEO最適化

【GASスプレッドシート】getValues()で複数セルデータを高速一括取得・SEO最適化

Google Apps Script (GAS) を用いてスプレッドシートのデータを操作する際、複数セルの値(データ)を効率的かつ高速に取得することは、自動化スクリプトのパフォーマンスと信頼性を決定づける最も重要な要素の一つです。getValues()メソッドは、このニーズに応えるための基本的ながら極めて強力な機能です。

本記事では、GASのRange.getValues()メソッドを徹底解説します。複数セルのデータを二次元配列として一括取得する基本から、getValue()getDisplayValues()との明確な違い、各データ型(数値、文字列、日付、真偽値)の挙動、さらには大規模データ処理のためのパフォーマンス最適化(チャンク処理)、そしてよくある「ハマりどころ」と対策まで、具体的なコード例を交えて分かりやすく紹介します。

【GAS高速化】getFontWeights()で太字を一括取得!API呼び出しを激減させる方法

【GAS高速化】getFontWeights()で太字を一括取得!API呼び出しを激減させる方法

Google Apps Script (GAS)で、スプレッドシートの大量のセルの中から「太字(bold)のセル」を探す処理を書いたとき、実行に時間がかかりすぎて困った経験はありませんか?その原因は、十中八九、ループの中でgetFontWeight()(単数形)を呼び出していることにあります。

この記事では、パフォーマンスを劇的に改善するための必須メソッド**getFontWeights()**に焦点を当て、その効果的な使い方と、取得した書式情報を他のデータと組み合わせて活用する、より高度なテクニックを解説します。