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

記事内に商品プロモーションを含む場合があります

Google Apps Script(GAS)で「AのGoogleスプレッドシートから、Bのスプレッドシートに、シートを開いたタイミングで内容を全部コピーして上書きしたい」と思いました。

しかし、ドンピシャのコードが検索してもみつかりませんでした。

ということで、見つからなかったので、他サイトを参考にしながら書いてみました。

職業プログラマーではないので、適当なコードですがとりあえず動いているので、参考までに公開してみたいと思います。

目次

GASの別のスプレッドシートコピーでやりたかったこと

スプレッドシートA(自分のシート)を開いたタイミングで、スプレッドシートBから内容をコピーして、スプレッドシートAに全内容を上書き。

AとBのスプレッドシートを、全く同じ状態にする。

参考にしたサイト

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

GASで、スプレッドシート起動時に別スプレッドシートの値のある全範囲をコピー&ペーストするコード

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

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

基本は、コメントアウトしてある説明のとおりです。

  1. 2行目の「ここにスプレッドシートキーを入力」
  2. 5行目の「元データのシート名」
  3. 6行目の「自分のシート名」

あとは、上記3点を各自の仕様に合わせて書き直せばOKかと思います。

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

GASで、シート上のボタンクリック時に別スプレッドシートの値のある全範囲をコピー&ペーストするコード

onOpen()がうまく動いていない感じがありました。

そこで、スプレッドシート上に配置したボタンを押したらコードが起動してコピペされるように書き換えました。

とはいっても、元々のGASのコードはほぼ同じ。

関数名をonOpen()からgetList()に変更しただけです。

あとは、このコードを起動するボタンをスプレッドシート上に作ります。


挿入>図形描写を選択。


なんでもよいですが、適当に四角でも書きます。


このようなボタンが出来上がります。右クリックしてから、右上部分をクリックします。


スクリプト割り当てができますので、こちらをクリック。


先ほど書いた関数であるgetListを入力します。

これで完成です。

あとは、スプレッドシート上でボタンを左クリックすると、getListの関数が起動し、コピペが実行されます。

最後に

スプレッドシートのimportrange関数では、元データの編集権限がないと実行できませんが、こちらの方法ならコピペなので実行できます。

起動時、毎回「sheet_copyTo.clear();」で全消しリフレッシュしてからコピペされるので、マスターデータの更新情報がその都度入ります。

つまりこれにより、AとBのスプレッドーシートの内容が全く同じになります。
(上書きだけだと、コピペ元のシートの内容が”少なくなっている”ような場合、バグる)

ひたすら転記する作業に疲れた人とかも、使えるかもしれません。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

198※世代。メーカー技術者です。 TOEIC900、中国語検定3級、韓国語初級。雑多に色々と書いています。

コメント

コメント一覧 (2件)

  • 10, 11行目の部分違いますよ。

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

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

    • コメントありがとうございます!自分の環境では記事内のコードで動いてるっぽいのですが。。。
      (誤りはあるけど、動きはしているみたいな状態なのでしょうかね。。。)

      自分でもあまりよくわかってないので、色々なご指摘助かります。

コメントする

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

目次