1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GASでスプレッドシートの値を高速コピーする方法

GASでスプレッドシートの値を高速コピーする方法

GASでスプレッドシートの値を高速コピーする方法

Google Apps Script(GAS)でスプレッドシートの操作を自動化する際、特定のセル範囲の「値のみ」を別の場所にコピーしたい場面は頻繁に発生します。その際に役立つのがcopyValuesToRangeメソッドです。

このメソッドは書式や数式を除外して純粋な値だけをコピーするため、データ転送やバックアップ処理を効率化できます。この記事では、copyValuesToRangeの基本的な使い方から実践的な応用例までを詳しく解説します。

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

copyValuesToRangeメソッドの基本

copyValuesToRangeは、指定した範囲の値を、別のシートの特定の座標へコピーするためのメソッドです。数式やセルの書式はコピーせず、値だけを転送するのが最大の特徴です。

基本構文

sourceRange.copyValuesToRange(gridId, column, columnEnd, row, rowEnd);

このメソッドは5つの引数を取ります。

  • gridId: (Integer) コピー先シートのID。sheet.getSheetId()で取得できます。
  • column: (Integer) コピー先の開始列番号(例: A列なら1、C列なら3)。
  • columnEnd: (Integer) コピー先の終了列番号。
  • row: (Integer) コピー先の開始行番号(例: 1行目なら1、5行目なら5)。
  • rowEnd: (Integer) コピー先の終了行番号。

簡単なコード例

以下のコードは、「SalesData」シートのB2:E10の値を、「Archive」シートのC5から始まる範囲にコピーします。

function basicCopyExample() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName('SalesData');
  const targetSheet = ss.getSheetByName('Archive');

  // コピー元の範囲を取得
  const sourceRange = sourceSheet.getRange('B2:E10'); // 9行 x 4列

  // コピー先のシートIDを取得
  const targetGridId = targetSheet.getSheetId();

  // 値のみコピーを実行
  sourceRange.copyValuesToRange(
    targetGridId,
    3,  // 開始列: C列
    6,  // 終了列: F列 (C,D,E,Fの4列)
    5,  // 開始行: 5行目
    13  // 終了行: 13行目 (5〜13の9行)
  );
}

注意点: コピー元とコピー先の範囲の行数・列数が一致していないとエラーが発生します。

実践例:動的な範囲のデータをコピーする

データの量が変動する場合、getLastRow()メソッドなどを使って範囲を動的に取得するのが一般的です。

以下の例では、「Inventory」シートのA列からD列までの全データ(ヘッダー行を除く)を「Backup」シートの2行目以降にバックアップします。

function dynamicRangeCopy() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName('Inventory');
  const targetSheet = ss.getSheetByName('Backup');

  // ヘッダー行(1行目)を除いた最終行を取得
  const lastRow = sourceSheet.getLastRow();
  if (lastRow < 2) return; // データがなければ終了

  // コピー元の範囲を動的に取得 (2行目から最終行まで、4列分)
  const sourceRange = sourceSheet.getRange(2, 1, lastRow - 1, 4);

  // コピーを実行
  sourceRange.copyValuesToRange(
    targetSheet.getSheetId(),
    1, // 開始列: A列
    4, // 終了列: D列
    2, // 開始行: 2行目
    lastRow // 終了行: 元データの最終行と同じ
  );
}

この方法なら、元データの行数が増減してもスクリプトを修正する必要がありません。

よくあるエラーと対処法

1. パラメータの型が不一致

エラーメッセージ: Exception: The parameters (String,number,number,number,number) don't match the method signature for Range.copyValuesToRange.

原因: gridIdにシート名(文字列)を渡しているなど、引数の型が間違っています。gridIdは必ずgetSheetId()で取得した数値でなければなりません。

2. コピー元とコピー先の範囲サイズが不一致

エラーメッセージ: Exception: The coordinates or dimensions of the range are invalid.

原因: コピー元とコピー先の行数または列数が一致していません。例えば、コピー元が10行 x 4列なのに、コピー先の指定が9行 x 4列になっている場合などに発生します。範囲の計算が正しいか確認してください。

まとめ

copyValuesToRangeメソッドは、スプレッドシート間のデータ転送、特に定期的なバックアップや実績データの記録といった作業を自動化する際に非常に役立ちます。

引数の指定が少し複雑ですが、範囲のサイズを正確に合わせることさえ意識すれば、シンプルかつ高速に値のコピーが実現できます。ぜひ日々の業務効率化に活用してください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Google Apps Script - copy row & paste as values

I am trying to copy one range to another using GAS - but I need the range to 'paste as values' This code works (but pastes as formulas): var sheet = SpreadsheetApp.openById(&quot;

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

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

Class Range | Apps Script | Google for Developers

[GAS]このセル範囲の移動・コピー・削除を行う方法 -Rangeクラス-|テックアップライフ

Google Apps Script (GAS) でこのセル範囲の移動・コピー・削除を行う方法を説明します。 Range

【生成AI×GAS】違うシートに値をコピーする|オレンジピーチ★トシ

オレンジピーチのトシです。 今回は、シートを飛び越えて、値をコピーする方法を紹介します。  データをコピーするときには、違うシートや、違うファイルにコピーすることが多いですよね。  GAS(Google Apps Script)でスプレッドシートを操作して、別のシートに値をコピーする方法を、生成AIを利用して作っていきます。 完成イメージ:やりたいこと  今回、実施したいことは、下の図のようなスプレッドシートで、「転記元」というシートから、「転記先」というシートに、値をコピーする。  コピーするのは、「A2~D2」セルの値を、「A8~D8」セルにコピーすることとする。 (今回も、

Class Range | Apps Script | Google for Developers

Spreadsheet Service | Apps Script | Google for Developers

関連記事

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を意識した応用テクニックまで、徹底的に解説します。

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