GASでスプレッドシートのセルをコピー&ペースト(コピペ)する方法(copyToメソッド)

スプレッドシートの操作の中で最も頻度が高い操作は、セル範囲を選択し、コピー&ペースト(貼り付け)を行う「コピペ」です。

実はGoogle Apps Script(GAS)でもスプレッドシートのセルをコピーし、貼り付けることができます。

今回、GASでスプレッドシートのセルのコピペを行う方法を解説します。

スプレッドシートのセルのコピペもGASで可能

Google Apps Script(GAS)で、スプレッドシートにある特定範囲のセルを別の範囲のセルにコピーしたい場合があります。

セルの値をコピーして貼り付ける方法としてよく使われるのが、getValueメソッドとsetValueメソッドを使うやり方です。

コピーしたいセルに対しgetValueで値を取得して、コピー先のセルに対しsetValueで値を書き込むことで実現できます。

ただ、このコピペの方法は値の取得・書き込みで計2回メソッドを実行する必要があり、またセルの書式はコピーできません。

実はGASには1回の実行でコピペができるメソッドが用意されています。

GASでセルをコピペするにはcopyToメソッド

Google Apps Script(GAS)でスプレッドシートのセルをコピーし、別のセルに貼り付けるにはcopyToメソッドを使用します。

コピー対象のセル範囲Rangeオブジェクト.copyTo(コピー先のセル範囲, {options})

copyToメソッドはセル範囲を表すRangeオブジェクトで利用可能なメソッドです。

コピー対象のセル範囲を指定したRangeオブジェクトで、引数にコピー先のセル範囲のRangeオブジェクトを指定します。

なお、必須ではないオプションの引数としてコピペの形式が指定することができます。

  1. contentsOnly:true
  2. formatOnly:true

オプションの引数を指定しない場合、セルのコピペでは値と書式の両方がコピー&ペーストされます。

1つ目のcontentsOnly:trueを指定すると値のみのコピペ、2つ目のformatOnly:trueを指定すると書式のみコピペされます。

なお、copyToメソッドは、スプレッドシートのシートをコピーする際にも使用します。

GASでスプレッドシートのシートをコピーする方法(copyToメソッド)

シートをコピーする際のcopyToメソッドはsheetオブジェクトで実行します。

このようにcopyToメソッドは使用するオブジェクトによって、そのコピー対象となる要素が変化します。

セルのコピペ(コピー・貼り付け)のGASサンプルコード

実際にスプレッドシートのセルをコピペするGoogle Apps Script(GAS)のサンプルコードを解説します。

Google Apps Script(GAS)でスプレッドシート上のセルをコピー&ペースト(コピペ)する方法(copyToメソッド)

function cellCopy(){
//スクリプトに紐付いたアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet();
//コピー対象のセル範囲を選択する
let copyRange = mySheet.getRange(2, 3);
//貼り付け先のセル範囲を選択する
let pasteRange = mySheet.getRange(2, 8);
//コピー対象のセル範囲のデータを貼り付け先のセルにコピーする
//オプション指定で書式についてはコピー対象から除外する
copyRange.copyTo(pasteRange);
}

上記のスプレッドシートのセルをコピペするGASコードを実行すると、指定したセルに値がコピペが行われます。

スプレッドシートのセルのコピペを行うGoogle Apps Script(GAS)のサンプルコードを実行した結果

サンプルコードは1つのセルが対象でしたが、getRangeで複数のセル範囲を指定してコピペすることも可能です。

そのため、決まったルールでコピペを行う処理がある場合は、GASでコピペを自動で行うスクリプトを書くことで手作業を削減し、効率化できます。

オプションを使って書式なしで貼り付けも

先程紹介したGASのサンプルコードは、書式も含めた形でのコピー&ペーストでした。

書式がコピペされてしまうと表の見栄えが崩れてしまう場合には、書式なしの値のみコピペするやり方もあります。

Google Apps Script(GAS)でスプレッドシート上のセルをコピー&ペーストする際に、copyToメソッドにオプションを追加

前述のcopyToメソッドで解説した通り、「{contentsOnly:true}」を指定することで書式はコピー対象から除外して貼り付けられます。

GASのセル範囲をコピペするcopyToメソッド「contentsOnly:true」のオプションを追加して実行した結果、書式なしの貼り付けに

copyToメソッドにオプション引数を指定して実行したところ、上の図のように書式コピーはされずに、値だけのコピペができました。

このように、copyToでは値+書式コピー、値のみコピー、書式のみコピーの3種類を実行できます。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのセルのデータをコピペする方法を紹介しました。

スプレッドシートのセルをコピー&ペーストするには、GASに用意されたcopyToメソッドを使用します。

コピーしたいセル範囲を選択したRangeオブジェクトで、コピー先のセル範囲を指定してcopyToメソッドを実行すると、セルのコピペができます。

セル操作でよく使うgetValueとsetValueでもセルのコピーと貼り付けはできますが、copyToの方が1回の処理で済むので、推奨です。

GASによるコピペの自動化を行って、スプレッドシートの業務をもっと効率化させましょう。