GASで特定の範囲のセルのデータをコピーペーストする方法

Tips

今回はGASを使ってスプレッドシートの特定の範囲のセルのデータをコピーペーストする方法をご紹介します。

特定の1つのセルのデータをコピーペーストする方法についてはこちらの記事で紹介しています。

GASで特定のセルをコピーペーストする方法
今回はGASを使ってスプレッドシートの特定のセルのデータをコピー&ペーストする方法をお伝えします。コピーペーストにはcopyToメソッドを使う方法とgetValues/setValueメソッドを使う方法の大きく2つの方法があり、それぞれ特徴があります。

今回ご紹介するのは上記のものとほぼ同じですが、微妙にコードの記述方法が異なるのでポイントを押さえてぜひマスターしてください。

1つのセルのコピーペーストとの違いは何か

1つのセルのコピーペーストと特定範囲のセルのコピーペーストとの最大の違いはセル名の記載方法です。

例えばA1セルを選択する時の記述は下記の通りとなります。

シート名.getRange(‘A1’)

次にA1:B1セルの範囲を選択する時の記述は下記の通りです。

シート名.getRange(‘A1:B1’)

基本的にはスプレッドシート上で関数を組む時と同じような感覚で記述をします。

また、使用するメソッドによっては他にも違いが出てきます。

詳しくは下記にて解説していきます。

copyToメソッドを使ったコピーペースト

copyToメソッドを使用する場合の基本のコーディングは1つのセルのコピーペーストと同じです。

コピーしたいセル範囲.copyTo(ペーストしたいセルの範囲)

例えばA1:B1の範囲のデータをコピーしてA2:B2にペーストしたい場合のサンプルコードは下記の通りです。

function copy_paste(){
 //スクリプトファイルに紐づけられたスプレッドシートのファイルを読み込む
 var spreadsheet = SpreadsheetApp.getActive();
 //コピーペーストを実施したいタブを読み込む
 var sheet = spreadsheet.getSheetByName(‘シート名’);
 //コピーしたいセル範囲を選択する
 var copyRange = sheet.getRange(‘A1:B1’);
 //ペーストしたいセル範囲を選択する 
 var pasteRange = sheet.getRange(‘A2:B2’);
 //copyToメソッドでコピーペーストする
 copyRange.copyTo(pasteRange);
}

copyToメソッドはコピーペースト用のスクリプトなだけあって特定の1つのセルのコピーペーストと変わらない記述でOKです。

getValues/setValuesメソッドを使ったコピーペースト

特定の1つのセルをコピーペーストする時は「getValue」メソッドと「setValue」メソッドでしたが、特定の範囲の場合は複数セルの処理になるので、英語の複数形の記述の「s」が付きます。

コピーしたいセル範囲.getValues()

ペーストしたいセル範囲.setValues(コピーしたデータ)

例えばA1:B1の範囲のデータをコピーしてA2:B2にペーストしたい場合のサンプルコードは下記の通りです。

function copy_paste(){
 //スクリプトファイルに紐づけられたスプレッドシートのファイルを読み込む
 var spreadsheet = SpreadsheetApp.getActive();
 //コピーペーストを実施したいタブを読み込む
 var sheet = spreadsheet.getSheetByName(‘シート名’);
 //コピーしたい範囲のセルのデータを取得する
 var copyDatas = sheet.getRange(‘A1:B1’).getValues();
 //ペーストしたい範囲にデータを貼り付ける
 sheet.getRange(‘A2:B2’).setValues(copyDatas);
}

getValues/setValuesメソッドを使用する場合は2点注意点があります。

  • getRangeで範囲選択した場合getValue/setValueメソッドを使用するとエラーが出る
  • コピーする範囲とペーストする範囲が異なるとエラーが出る

getRangeで範囲選択した場合getValue/setValueメソッドを使用するとエラーが出る

こちらは既に解説した通りです。

A1:B1のように複数のセルを選択してコピーしたい場合、複数のセルの情報をペーストしたい場合、getValue/setValueメソッドを使用するとエラーが出ます。

「s」のつけ忘れは割とやってしまうことなので、エラーが出た時は慌てず冷静に「s」をつけ忘れていないかチェックしましょう。

コピーする範囲とペーストする範囲が異なるとエラーが出る

例えばA1:B1のように横並びの2つのセルの情報をコピーして、A2:A3のように縦並びの2つのセル範囲に貼り付けることはできません。

横並びのセル範囲をコピーしたのであれば、A2:B2のように横並びのセル範囲を貼り付け先の範囲として指定しなくてはなりません。

また、貼り付け先をA2:C2のようにコピー元の範囲と相違する大きさの範囲を選択してもエラーが出てしまうので気をつけてください。

まとめ・終わりに

今回は特定の範囲のデータのコピーペーストの方法について解説していきました。

1つのセルの場合とは多少記述方法が違う部分がありますので気をつけてください。

もしエラーが出てしまった場合は冷静に対処していきましょう。

また、今回選択するセルの表記にはA1表記を使いましたが、行番号・列番号を使用して選択する方法もあります。

それぞれの選択方法の記述についてはこちらの記事を参考にしてください。

GASを使ってセル範囲を選択する方法
今回はGASのgetRangeメソッドを使ってスプレッドシートの範囲を選択する方法をご紹介します。getRangeメソッドはかなり使用頻度が高く、スプレッドシートで行う作業を自動化するためには必須と言っても過言ではありません。...

コメント

タイトルとURLをコピーしました