Google Apps Script(GAS)で別スプレッドシートの値のある全範囲をコピー&ペーストする方法

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

自分の手元にあるGoogleスプレッドシートを開いたタイミングで、マスターデータを持つGoogleスプレッドシートから内容を自分のスプレッドシートに全コピーしたかったのですが、ドンピシャのコードがなかったので、他サイトを参考にしながら書いてみました。職業プログラマーではないので、適当なコードですがとりあえず動いているので、参考までに公開してみたいと思います。

やりたかったこと

自分のスプレッドシートを開いたタイミングで、マスターデータを持った別のスプレッドシートの特定のシートから全値をとってきて、自分のスプレッドシートの特定のシートのデータをマスターデータと同じ最新の状態にする。

参考にしたサイト

[GAS][スプレッドシート]別のスプレッドシートにデータをコピーするには: 逆引きGoogle Apps Script
上記サイトのコードをベースにして書きました。

Google Apps Script(GAS)のコード

コードを下記に置いておきます。

function onOpen() {
  var ss_copyFrom = SpreadsheetApp.openById('ここにスプレッドシートキーを入力'); //コピー元のマスターデータのあるスプレッドシート
  var ss_copyTo = SpreadsheetApp.getActiveSpreadsheet();

  var sheet_copyFrom = ss_copyFrom.getSheetByName('元データのシート名'); //コピー元のスプレッドシートの値を抜き出したいシート名
  var sheet_copyTo = ss_copyTo.getSheetByName('自分のシート名'); //ペーストする自分のスプレッドシートのシート名

  sheet_copyTo.clear();// コピー元の行や列が減っていることを考慮して、一旦コピペ先のシートをクリア

  var lastRow = ss_copyFrom.getLastRow(); //最終行を取得
  var lastColumn = ss_copyFrom.getLastColumn(); //最終列を取得

  var copyValue = sheet_copyFrom.getRange(1,1,lastRow,lastColumn).getValues(); //コピー元のシートから値の入っている全範囲をコピー
  sheet_copyTo.getRange(1,1,lastRow,lastColumn).setValues(copyValue); //自分のシートにコピーした値を全範囲をペースト
}

上記コードは、自分のスプレッドシート(ペースト先のスプレッドシート)の方に書きました。

基本は、コメントアウトしてある説明のとおりです。2行目の「ここにスプレッドシートキーを入力」、5行目の「元データのシート名」、6行目の「自分のシート名」を各自の仕様に合わせて書き直せば動くかと思います。

あと、自分はスプレッドシート開いたタイミングで起動して欲しかったので、function onOpen()を使いました。

最後に

スプレッドシートのimportrange関数では、元データの編集権限がないと実行できませんが、こちらの方法ならコピペなので実行できます。起動時、毎回「sheet_copyTo.clear();」で全消しリフレッシュしてからコピペされるので、一応マスターデータの更新情報がその都度入ることになり、割と良いかと思ってます。


SNSでもご購読できます。

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください