copyTo 範囲コピーを実施する | GoogleAppsScript リファレンス Spreadsheet

スプレッドシートの範囲を指定してコピー後に別箇所に張り付ける動作を手軽に実現できます。

実行例 copyTo 範囲コピーを利用する

こちらのセル情報からcopyToを利用することで

以下のように別箇所に動作をコードから実行する方法を紹介します。

リファレンス

copyTo(destination)

destinationに張り付け箇所のrangeを指定します。上の例の場合はA1:B2の範囲をC3にコピーするため、A1:B2のrangeに対してcopyToを実行し、C3を与える形になります。

実行サンプル

今回はA1:B2の範囲を使ってC1にコピーするため以下の通り、記述します。

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  // コピー範囲を指定します
  var range = sheet.getRange("A1:B2");
  // 貼り付け先のrangeを与えます
  range.copyTo(sheet.getRange("C3"));
}

実行に成功すると下記の通り、C3を起点にA1:B2の値がコピーされます。

今回は起点のC3のみ指定しましたが、rangeのためC3:D4を指定しても同様の結果を得ることが出来ます。

copyToの2つ目の引数を利用してコピー対象を指定する

copyToには2つ目の引数指定も可能です。copyTo(destination, options)

propertytypedescription
PASTE_NORMALEnum値・数式・書式を貼り付けます。
PASTE_NO_BORDERSEnum値・数式・書式を、境界線なしで貼り付けます。
PASTE_FORMATEnum形式とデータ検証のみを貼り付けます。
PASTE_FORMULAEnum数式のみを貼り付けます。
PASTE_DATA_VALIDATIONEnumデータ検証のみを貼り付けます。
PASTE_VALUESEnum書式、数式、またはマージなしで値のみ張り付けます。
PASTE_CONDITIONAL_FORMATTINGEnumカラールールのみを貼り付けます。
PASTE_COLUMN_WIDTHSEnum列幅のみを貼り付けます。

未指定の場合はPASTE_NORMALの挙動になり、値・数式・書式がコピーされます。

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  // コピー範囲を指定します
  var range = sheet.getRange("A1:B2");
  // 貼り付け先のrangeを与えます
  range.copyTo(sheet.getRange("C3"), spreadsheetApp.CopyPasteType.PASTE_VALUES);
}

良く使うのは値のみコピーするPASTE_VALUESになりますので覚えておくとよいでしょう。

また値のみ、書式のみの場合は更に簡潔にかけるオプションも提供されています。

propertytypedescription
formatOnlyBoolean書式のみをコピーします
contentsOnlyBoolean値のみをコピーします

例えば値のみをコピーしたい場合は以下のように記述します。

var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange("A:E").copyTo(sheet.getRange("F1"), {contentsOnly:true});

他でも使えるパターンなので、覚える場合はこちらをお勧めします。

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