GASでスプレッドシートの指定範囲をコピーする方法

GASでスプレッドシートの指定範囲をコピーする方法
くら
くら

GASでスプレッドシートの指定範囲をコピーする方法を紹介します!

こんな人にむけた記事です。
  • GASを使って、スプレッドシートの指定範囲をコピーしたい人
スポンサーリンク

指定範囲のデータを別の範囲にコピーする:copyTo(destination) 

指定範囲のデータを別の範囲にコピーします。

パラメータ

名前 タイプ 説明
destination Range セルの範囲

戻り値

なし

セルの範囲を指定して、指定範囲にコピーする

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination);
}

サンプルAシートのコピー元を、サンプルBシートにコピーします。

copyTo() - 実行前1
サンプルAシートのコピー元
copyTo() - 実行前1 - 1
サンプルBシートのコピー先

サンプルコードを実行すると、

copyTo() - 実行後1
コピー結果

このように値も書式もコピーされます。

公式ドキュメント:Range > copyTo(destination) 

指定範囲のデータを別の範囲に特殊貼り付けする:copyTo(destination, copyPasteType, transposed) 

指定範囲のデータを別の範囲に特殊貼り付けします。

パラメータ

名前 タイプ 説明
destination Range セルの範囲
copyPasteType CopyPasteType 貼り付け方法を指定します
PASTE_NORMAL:値も書式も貼り付けます
PASTE_NO_BORDERS:枠線を除くすべてを貼り付けます
PASTE_FORMAT:書式のみ貼り付けます
PASTE_FORMULA:数式のみ貼り付けます
PASTE_DATA_VALIDATION:データの入力規則のみ貼り付けます
PASTE_VALUES:のみ貼り付けます
PASTE_CONDITIONAL_FORMATTING:条件付き書式のみ貼り付けます
PASTE_COLUMN_WIDTHS:列幅のみ貼り付けます
transposed Boolean Trueなら転置して貼り付けます

戻り値

なし

値も書式も貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_NORMAL);
}

サンプルAシートのコピー元を、サンプルBシートに値も書式も貼り付けます。

copyTo() - 実行前2
コピー元
copyTo() - 実行前2 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後2
コピー結果

このように値も書式も貼り付けることができます。

枠線を除くすべてを貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_NO_BORDERS,false);
}

サンプルAシートのコピー元を、サンプルBシートに枠線を除くすべてを貼り付けます。

copyTo() - 実行前3
コピー元
copyTo() - 実行前3 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後3
コピー結果

このように枠線を除くすべてを貼り付けることができます。

書式のみを貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMAT,false);
}

サンプルAシートのコピー元を、サンプルBシートに書式のみ貼り付けます。

copyTo() - 実行前4
コピー元
copyTo() - 実行前4 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後4
コピー結果

このように書式のみを貼り付けることができます。

数式のみ貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMULA,false);
}

サンプルAシートのコピー元を、サンプルBシートに数式のみを貼り付けます。

copyTo() - 実行前5
コピー元
copyTo() - 実行前5 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後5
コピー結果

このように数式のみ貼り付けることができます。

データの入力規則のみを貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATION,false);
}

サンプルAシートのコピー元を、サンプルBシートにデータの入力規則のみを貼り付けます。

copyTo() - 実行前6
コピー元
copyTo() - 実行前6 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後6
コピー結果

このようにデータの入力規則のみが貼り付けることができます。

値のみを貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_VALUES,false);
}

サンプルAシートのコピー元を、サンプルBシートに値のみを貼り付けます。

copyTo() - 実行前7
コピー元
copyTo() - 実行前7 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後7
コピー結果

このように値のみが貼り付けることができます。

条件付き書式のみを貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_CONDITIONAL_FORMATTING,false);
}

サンプルAシートのコピー元を、サンプルBシートに条件付き書式のみを貼り付けます。

copyTo() - 実行前8
コピー元
copyTo() - 実行前8 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後8
コピー結果

このように条件付き書式のみが貼り付けることができます。

列幅のみを貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS,false);
}

サンプルAシートのコピー元を、サンプルBシートに列幅のみを貼り付けます。

copyTo() - 実行前9
コピー元
copyTo() - 実行前9 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後9
コピー結果

このように列幅のみを貼り付けることができます。

転置して貼り付ける

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_NORMAL,true);
}

サンプルAシートのコピー元を、サンプルBシートに転置して貼り付けます。

copyTo() - 実行前10
コピー元
copyTo() - 実行前10 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後10
コピー結果

このように転置して貼り付けることができます。

公式ドキュメント:Range > copyTo(destination, copyPasteType, transposed)

指定範囲のデータを別の範囲に貼り付けする(オプションあり):copyTo(destination, options)

指定範囲のデータを別の範囲に貼り付けします。(オプションあり)

パラメータ

名前 タイプ 説明
destination Range セルの範囲
optinos Object 以下のオプションを指定できます
formatOnly:書式のみ貼り付ける場合はtrue
contentsOnly:のみ貼り付ける場合はtrue

戻り値

なし

書式のみを貼り付ける(formatOnly:true)

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, {formatOnly:true});
}

サンプルAシートのコピー元を、サンプルBシートに書式のみを貼り付けます。

copyTo() - 実行前11
コピー元
copyTo() - 実行前11 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後11
コピー結果

このように書式のみ貼り付けることができます。

値のみを貼り付ける(contentsOnly:true)

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // サンプルAのシート指定
  const source = ss.getSheetByName("サンプルA").getRange("A2:C6");
  // サンプルBのシートを指定
  const destination = ss.getSheetByName("サンプルB").getRange("A2:C6");
  
  // サンプルBのシート範囲を指定
  source.copyTo(destination, {contentsOnly:true});
}

サンプルAシートのコピー元を、サンプルBシートに値のみを貼り付けます。

copyTo() - 実行前12
コピー元
copyTo() - 実行前12 - 1
コピー先

サンプルコードを実行すると、

copyTo() - 実行後12
コピー結果

このように値のみを貼り付けることができます。

まとめ

くら
くら

スプレッドシートの指定範囲をコピーするいろいろな方法をまとめてみました!

毎回同じようなデータをコピーしているような作業があればこれで自動化できそうですね!

copyTo()の使いみち
  • GASによる特殊貼付けはこれで実現できますね!

コメント

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