1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GASでスプレッドシートの書式設定を別範囲に効率的にコピーする方法

GASでスプレッドシートの書式設定を別範囲に効率的にコピーする方法

GASでスプレッドシートの書式設定を別範囲に効率的にコピーする方法

Google Apps Script(GAS)を利用すると、スプレッドシートの定型作業を自動化し、業務効率を大幅に向上させることができます。特に、スプレッドシートの書式を別の範囲にコピーする際に役立つのが「copyFormatToRange」メソッドです。

この記事では、copyFormatToRangeメソッドの基本的な使い方から、より実践的なテクニックまでをサンプルコードを交えて分かりやすく解説します。

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

copyFormatToRangeメソッドの概要

copyFormatToRangeは、指定したセルの書式(文字色、背景色、罫線、フォントサイズなど)を、別のシートやセル範囲にコピーするためのメソッドです。これにより、手作業で書式を再設定する手間を省き、一貫性のあるデザインを簡単に適用できます。

基本構文

以下がcopyFormatToRangeメソッドの基本構文です。

range.copyFormatToRange(gridId, column, columnEnd, row, rowEnd);

パラメータの詳細

パラメータ説明
gridIdIntegerコピー先のシートIDを指定します。
columnIntegerコピー先の開始列番号を1から始まる整数で指定します。
columnEndIntegerコピー先の終了列番号を指定します。
rowIntegerコピー先の開始行番号を1から始まる整数で指定します。
rowEndIntegerコピー先の終了行番号を指定します。

基本的な使い方

まずは、基本的な使い方を見ていきましょう。ここでは、‘テンプレート’シートのA1:F10範囲の書式を、‘報告書’シートの同じ範囲にコピーする例を紹介します。

function copyFormatBasic() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName('テンプレート');
  const targetSheet = ss.getSheetByName('報告書');
  
  // コピー元の範囲を取得
  const sourceRange = sourceSheet.getRange('A1:F10');
  // コピー先のシートIDを取得
  const targetGridId = targetSheet.getSheetId();
  
  // 書式をコピー
  sourceRange.copyFormatToRange(
    targetGridId,
    1, // 開始列 (A列)
    6, // 終了列 (F列)
    1, // 開始行
    10 // 終了行
  );
}

このスクリプトを実行すると、sourceRangeで指定した範囲の書式が、指定したtargetGridIdのシートの対応する範囲に適用されます。

実践的な使い方:動的範囲指定と条件付き書式

次に、より実用的なテクニックを紹介します。

データの量に応じて範囲を動的に指定する

レポート作成など、データの量が毎回変動する場合、getLastRow()getLastColumn()メソッドを使って範囲を動的に取得すると便利です。

function copyFormatWithDynamicRange() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const templateSheet = ss.getSheetByName('テンプレート');
  const reportSheet = ss.getSheetByName('月次報告');
  
  // テンプレートシートのデータが存在する最終行・最終列を取得
  const lastRow = templateSheet.getLastRow();
  const lastCol = templateSheet.getLastColumn();
  
  // データ範囲全体の書式をコピー
  templateSheet.getRange(1, 1, lastRow, lastCol)
    .copyFormatToRange(
      reportSheet.getSheetId(),
      1,      // 開始列
      lastCol,// 終了列
      1,      // 開始行
      lastRow // 終了行
    );
}

これにより、元データのサイズが変わってもスクリプトを修正することなく、常に正しい範囲の書式をコピーできます。

条件付き書式もコピーする

copyFormatToRangeメソッドは、通常の書式だけでなく条件付き書式も一緒にコピーできます。

function copyConditionalFormatting() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName('基準データ');
  const targetSheet = ss.getSheetByName('分析結果');
  
  // B2:D10範囲の書式(条件付き書式を含む)をコピー
  sourceSheet.getRange('B2:D10').copyFormatToRange(
    targetSheet.getSheetId(),
    2, // 開始列 (B列)
    4, // 終了列 (D列)
    2, // 開始行
    10 // 終了行
  );
}

注意点: 条件付き書式のルールがコピー先のデータ範囲と適合しない場合、意図しない表示になることがあります。コピー元とコピー先のデータ構造を揃えておくことが重要です。

よくあるエラーと対処法

  • Invalid gridId エラー: getSheetId()で取得したシートIDが正しいか確認してください。シート名が変更されたり、存在しないシートを指定したりするとエラーが発生します。
  • 範囲サイズの不一致: コピー元とコピー先の範囲サイズが異なると、書式が繰り返し適用されたり、一部しか適用されなかったりすることがあります。範囲指定が正しいか、列番号・行番号をよく確認しましょう。

まとめ

copyFormatToRangeメソッドを活用することで、スプレッドシートの書式設定作業を大幅に効率化できます。特に、定期的に作成するレポートや、複数のシートで同じデザインを維持したい場合に非常に強力なツールです。

最初はパラメータの指定に戸惑うかもしれませんが、慣れれば手作業での書式設定が不要になり、より本質的な作業に集中できるようになります。ぜひ、この機会にマスターして、日々の業務改善に役立ててください。

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

【GAS】CopyTo、行列コピー、スプレッドシートで自動コピーまとめ【Google Apps Script】

スプレッドシートのGASでCopyToを使用して行列コピーしたり、自動で別シートにコピーや値のみコピーなど、CopyToでできることをまとめて解説しています。複数行にコピーする時の範囲指定など、なるべくわかりやすく解説してみたいと思います。

関連記事

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

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

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

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

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

Google Apps Script (GAS) を使ってスプレッドシートを自動化する際、セルの**「テキスト折り返し設定」をプログラムで自在に制御する**ことは、データの視認性を高め、プロフェッショナルなシートレイアウトを維持するために不可欠です。本記事では、GASの主要メソッドであるgetWrap()getWraps()に焦点を当て、その基本的な使い方からSEOを意識した応用テクニックまで、徹底的に解説します。

この記事では、以下の疑問を解決します。