1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GAS getDataTable(true) でヘッダー行を正しく扱う方法【グラフ作成】

GAS getDataTable(true) でヘッダー行を正しく扱う方法【グラフ作成】

GAS getDataTable(true) でヘッダー行を正しく扱う方法【グラフ作成】

GASの getDataTable() を使ってグラフを作ったら、「ヘッダー(見出し)までデータとして扱われてしまい、グラフがおかしくなった」という経験はありませんか?

これは getDataTable() の非常に重要なパラメータ firstRowIsHeader の設定が原因です。この設定を正しく理解するだけで、データ取得の精度が格段に上がり、グラフ作成の自動化がスムーズに進みます。

本記事では、getDataTable()firstRowIsHeader パラメータに焦点を当て、その役割と true / false の使い分け、そして実践的な応用例までを分かりやすく解説します。

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

firstRowIsHeader パラメータの重要性

getDataTable() メソッドは、スプレッドシートのデータをグラフ化などに適した DataTable オブジェクトとして取得します。その際、取得範囲の1行目を「ヘッダー」として扱うか、それとも「データ」として扱うかを決めるのが firstRowIsHeader パラメータです。

  • getDataTable(true): 範囲の1行目をヘッダーとして認識します。グラフの凡例や軸ラベルに自動で設定されるため、グラフ作成時は基本的にこちらを使います。
  • getDataTable(false) または getDataTable(): 範囲のすべての行をデータとして扱います。ヘッダーが存在しないデータや、ヘッダーもデータの一部として処理したい場合に利用します。

getValues() が単純な二次元配列を返すのに対し、getDataTable() はこのパラメータによってデータ構造を明確に定義できる点が大きなメリットです。

truefalse の挙動の違いを比較

具体的に、firstRowIsHeader の設定値によって DataTable の中身がどう変わるのか見てみましょう。

仮に、以下のようなデータが A1:C3 の範囲にあるとします。

ProductSalesProfit
A10020
B15035

getDataTable(true) の場合

1行目がヘッダーとして認識され、列ラベル(ColumnLabel)に設定されます。

const range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1').getRange('A1:C3');
const dataWithHeader = range.getDataTable(true);

// 取得できるDataTableのイメージ
// 列ラベル: ['Product', 'Sales', 'Profit']
// データ行: [['A', 100, 20], ['B', 150, 35]]

getDataTable(false) の場合

1行目もデータとして扱われ、列ラベルは自動的に Col0, Col1… となります。

const range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1').getRange('A1:C3');
const dataWithoutHeader = range.getDataTable(false);

// 取得できるDataTableのイメージ
// 列ラベル: ['Col0', 'Col1', 'Col2']
// データ行: [['Product', 'Sales', 'Profit'], ['A', 100, 20], ['B', 150, 35]]

このように、グラフ化を目的とする場合は true を設定しないと、意図しない結果になってしまうことが分かります。

実践的なサンプルコード

getDataTable(true) を使って、売上データからグラフを生成する簡単なサンプルコードです。

function createDailySalesReport() {
  const sheet = SpreadsheetApp.getActive().getSheetByName('売上データ');
  const dataRange = sheet.getRange('A1:B11'); // A列:日付, B列:売上, 1行目はヘッダー
  
  // 最初の行をヘッダーとしてDataTableを取得
  const dataTable = dataRange.getDataTable(true);
  
  // 取得したDataTableを基に折れ線グラフを生成
  const chart = Charts.newLineChart()
    .setDataTable(dataTable)
    .setTitle('日次売上推移')
    .setXAxisTitle('日付')
    .setYAxisTitle('売上')
    .build();
  
  // 新しいシートを作成してグラフを挿入
  const newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('売上グラフ');
  newSheet.insertChart(chart);
}

このコードでは、getDataTable(true) を使うことで、'日付''売上' といったヘッダー情報がグラフに自動で反映されます。

応用例:レポートメールの自動送信

getDataTable() を活用すれば、日次レポートの作成とメール送信を自動化できます。

function sendDailyReportEmail() {
  const dataSheet = SpreadsheetApp.getActive().getSheetByName('日次データ');
  
  // データ範囲を最終行まで動的に取得
  const dataRange = dataSheet.getRange('A1:F' + dataSheet.getLastRow());
  const dataTable = dataRange.getDataTable(true);
  
  // データからグラフを生成し、画像Blobとして取得
  const chartBlob = Charts.newColumnChart()
    .setDataTable(dataTable)
    .setDimensions(800, 600)
    .setTitle('デイリーパフォーマンス')
    .build()
    .getBlob();
  
  // メールの本文を作成
  let mailBody = '<h1>日次レポート</h1><p>本日のパフォーマンスです。</p>';
  // ここにDataTableからサマリー情報を作成するコードを追加できます
  mailBody += '<img src="cid:chartImage">'; // グラフをインラインで表示

  // グラフ画像を添付してメールを送信
  MailApp.sendEmail({
    to: 'report@example.com',
    subject: '日次セールスレポート',
    htmlBody: mailBody,
    inlineImages: {
      chartImage: chartBlob
    }
  });
}

このスクリプトをトリガー設定で毎日実行すれば、手作業なしで関係者にグラフ付きのレポートを届けられます。

まとめ

getDataTable()firstRowIsHeader パラメータは、データ構造をスクリプトに正しく伝えるための重要なスイッチです。

  • グラフ化が目的なら getDataTable(true) を使うのが基本
  • 1行目をヘッダーとして認識させ、グラフのラベルなどに自動反映できる
  • false はヘッダーのないデータや、ヘッダー自体を分析したい特殊なケースで使う

この使い分けをマスターするだけで、GASによるデータ処理や可視化の自動化がより簡単かつ正確になります。ぜひ活用してください。

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

Chart Gallery | Charts | Google for Developers

Discover a variety of charts based on HTML5/SVG designed to address your data visualization needs.

関連記事

GAS getDataTable()メソッドでスプレッドシートのデータをグラフ化する徹底解説

GAS getDataTable()メソッドでスプレッドシートのデータをグラフ化する徹底解説

スプレッドシートのデータを手動でグラフにする作業、面倒に感じていませんか? Google Apps Script (GAS) を使えばその作業を自動化できますが、データをグラフに適した形に整えるのは少し手間がかかります。

そんな課題を解決するのが getDataTable() メソッドです。このメソッドを使えば、スプレッドシートのデータをたった1行でグラフ用のデータ形式に変換でき、データ可視化のプロセスを劇的に効率化できます。

本記事では、getDataTable() の基本的な使い方から、getValues() との違い、Google Charts APIと連携した動的なグラフ生成、大規模データを扱う際の注意点まで、実用的なサンプルコードを交えて分かりやすく解説します。

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

Google Apps Script(GAS)でスプレッドシートを効率的に操作する際、セルのテキスト折り返し設定を一括で管理することは、大規模なデータセットの視認性を高め、プロフェッショナルなレポート作成において不可欠です。getWraps()メソッドは、このテキスト折り返し設定を複数のセルから一度に取得するための強力なツールです。

本記事では、GASのRange.getWraps()メソッドを徹底解説します。基本的な使い方から、データ量が多い場合のパフォーマンス最適化(キャッシュ活用)、さらには取得した情報を元にした列幅の自動調整、堅牢なスクリプト開発のためのエラー処理、そしてsetWraps()メソッドと連携した一括設定方法まで、具体的なコードを交えて分かりやすく紹介します。