サイトアイコン Googleスプレッドシート 完全攻略

【GAS】複数の範囲をまとめて新しいシートに中身だけコピペする方法

GAS応用の一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【GAS】最下部を取得し別シートのデータをコピペする方法
  • GASでコピペする方法がわかります。
  • 今日の日付の挿入方法がわかります。
  • 最下部の位置を取得する方法がわかります。
  • 今回は、とっても価値の高い方法をお伝えします。


    これを知ることであなたは、

    逆に、知らないと

    毎回、同じような地味な作業をやり続けることになります。

    なので、サクッとマスターして

    と答えてあげてください。

    動画はこちら

    シートはこちら

    *クリックすることでシートが開きます。(コピーしてお使いください)

    スクリプト

    /**
     * 複数の範囲を別シートにコピペする
     */
    function CopyMultiRange() {
    
    
      const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
      //コピー元の範囲
      const rangelist = sh.getRangeList(['B2:B', 'D2:E', 'G2:G'])
      //コピー先
      const dsh = SpreadsheetApp.getActiveSpreadsheet().insertSheet()
    
    
      //コピー先の位置
      const start_row = 3
      const start_clm = 1
      let s_clm = start_clm
    
    
      //範囲リストの範囲をコピーしていく
      rangelist.getRanges().forEach(range => {
        // console.log(range.getValues())
        range.copyTo(dsh.getRange(start_row, s_clm, range.getNumRows(), range.getNumColumns()), { contentsOnly: true })
        s_clm += range.getNumColumns()
      })
    
    
      //範囲を選択状態にする
      dsh.getRange(start_row, start_clm, dsh.getLastRow() - start_row + 1, dsh.getLastColumn() - start_clm + 1).activate()
    
    
    }
    
    

     

    ポイント

    範囲のコピー

    コピー元の範囲.copyTo(コピー先の範囲)

    例)
    range.copyTo(dsh.getRange(“C3:C13”)

    値だけをコピーする

    copyTo の引数に { contentsOnly: true } を追加する

    例)
    range.copyTo(dsh.getRange(“C3:C13”, { contentsOnly: true } )

    複数の範囲を取得

    getRangeList

    例)
    const rangelist = sh.getRangeList([‘B2:B’, ‘D2:E’,’G2:G’])

     

    範囲のリストから1つずつ範囲を取り出す。

    例)
    rangelist.getRanges().forEach(range => {
    console.log(range.getValues())
    }

    選択状態にする

    範囲.activate()

    例)
    dsh.getRange(“A1:A2”).activate()

    最後までご覧いただきありがとうございます。

    つぎはこちら

    GAS応用の一覧

    モバイルバージョンを終了