Google Apps Script(GAS)を使ってスプレッドシート操作を自動化する際に、特定のセル範囲の値を別のシートにコピーする方法って、かなり便利ばい。そのために使うメソッドがcopyValuesToRange
なんだけど、ちょっと難しそうに見えるかもしれんね。でも心配せんで!ここでしっかり解説するけん、すぐに使えるようになるけ。
copyValuesToRangeメソッドってどんなもの?
まず、このメソッドがどんなものか簡単に説明するばい。copyValuesToRange(gridId, column, columnEnd, row, rowEnd)
って構文なんやけど、要するに「ある範囲の値を、別のシートの指定した範囲にコピーする」ためのものじゃ。これは、値だけをコピーして、書式とか数式は無視するところが特徴的やけ。
使い方の基本
sourceRange.copyValuesToRange(gridId, column, columnEnd, row, rowEnd);
このメソッドには5つのパラメータがあるけど、それぞれ簡単に説明するけ。
- gridId(シートID)
コピー先シートのIDを指定するんよ。これはSpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名").getSheetId()
で取得できるけんね。 - column(開始列)
コピー先の開始列番号を指定するけ。たとえば「C列」は3番目なので、3
って指定するんや。 - columnEnd(終了列)
コピー先の終了列番号も指定するけ。例えば「F列まで」コピーしたい場合、6
って指定すればOKじゃ。 - row(開始行)
コピー先の開始行番号を指定するけ。1から始めるけど、例えば「5行目」からスタートしたいなら、5
を指定するんや。 - rowEnd(終了行)
コピー先の終了行番号を指定するけ。たとえば「10行目」で終わるなら、10
を指定するんじゃ。
実際のコードで見る基本の使い方
function basicCopyExample() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sourceSheet = ss.getSheetByName('SalesData');
const targetGridId = ss.getSheetByName('Archive').getSheetId();
const sourceRange = sourceSheet.getRange('B2:E10');
sourceRange.copyValuesToRange(
targetGridId,
3, // C列から
6, // F列まで
5, // 5行目から
13 // 13行目まで
);
}
このコードは、「SalesData」シートから「Archive」シートにデータをコピーするものやけ。範囲を指定する際に、行数や列数が一致していないとエラーが出るけ、注意せんといけんよ。
実践的な動的範囲コピー
次は、データの量が変動する場合のコピー方法について説明するけ。
function dynamicRangeCopy() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sourceSheet = ss.getSheetByName('Inventory');
const lastRow = sourceSheet.getLastRow();
const sourceRange = sourceSheet.getRange(2, 1, lastRow-1, 4);
const targetSheet = ss.getSheetByName('Backup');
sourceRange.copyValuesToRange(
targetSheet.getSheetId(),
1,
4,
2,
lastRow
);
}
このコードは、「Inventory」シートのデータを「Backup」シートにコピーするものやけ。getLastRow()
を使って最終行を動的に取得し、データの変動に対応しとるんや。
よくあるエラーとその解決法
実装しているときに、よく出るエラーもあるけ。ここではそれに対する対策を紹介するけ。
パラメータ不一致エラー
Exception: Parameters don't match the method signature
ってエラーが出た場合、パラメータの型が違うことがあるけ。数値型を使うべきところで、文字列を使ってしまうことが多いけ、確認してみて。
範囲サイズ不一致エラー
コピー元とコピー先の範囲が一致しないと、Exception: The coordinates or dimensions of the range are invalid
が出るけ。範囲をしっかり確認して、合わせるようにしようね。
最後に
copyValuesToRange
メソッドを使うと、スプレッドシートのデータを簡単にコピーできるけ、特にデータ転送作業を自動化したいときにはとても役立つ機能じゃ。ただし、範囲やパラメータに注意が必要なので、実装前にしっかり確認してから使うようにしてほしいけね。
これで、スプレッドシートの操作をよりスムーズにできるようになるけ!みんなもぜひ使ってみてね。






コメント