Spread Sheetを連携してもらったんだけど・・
仲間内で、スプレッドシートの連携が流行っています(笑) というか、GlideAppsで作るアプリは、Google Spread Sheetから作っていたりしますから、当然と言えば当然ですけど。。
で。。 お互いにシートを編集して作業したりもするのですが、データそのものは連携しつつ、いろいろといじり倒したい時ってあるじゃないですか??
そういう時に、自分用の新しいスプレッドシートを作って、元のスプレッドシートのデータをまるごとコピーする。ってことをしたいことがあります。
手で、CTL-C CTL-Vでやるのが、毎回メンドクサイっていう場合だけでしょうけど(笑)
そういう作業用シートを作る時にGoogle App Scriptを紹介します。
こんなメニューが出てきて、「連携」って押すと、データがコピーされます。
Google Spread SheetのIDって??
まずちょっとだけ、元のファイルとか、自分のファイルを指定するのに、IDで指定するのが、今のところ一番安定しています(笑) IDは、URLの一部分です。
https://docs.google.com/spreadsheets/d/ここに入っているのがIDです/
Google App Script
Scriptの入れ方などは、
このあたりを参考にしてください。
コピペでプログラミング
GAS自体は、こんなにシンプルです。
function tom_copyfile() { var origRange = SpreadsheetApp.openById('コピー元のSpread Sheet のIDです').getSheetByName('シート名').getDataRange(); var values = origRange.getValues(); var row1=origRange.getLastRow(); var col1=origRange.getLastColumn(); var dist = SpreadsheetApp.openById('コピー先のSpread SheetのID').getActiveSheet(); dist.getRange(1, 1, row1,col1).setValues(values); } function onOpen() { SpreadsheetApp .getActiveSpreadsheet() .addMenu('ファイル連携', [ {name: '連携', functionName: 'tom_copyevent'}, ]); }
今回は、間違いがないように、コピー元とコピー先を、しっかりIDで管理していますが。。コピー先は、どのみち、このスクリプトを入れるシートに張り付くので。。
var dist = SpreadsheetApp.openById('コピー先のSpread SheetのID').getActiveSheet();
のところは、
var dist = SpreadsheetApp.getActiveSheet();
でも、かまいません。というか。。そうしておいた方が便利かもしれません。
もともとのファイルのDataRangeを読んできて、一気に値を取り込み、自分のシートにセットするっていうだけですね(笑) シートが分かれている場合は、シートも指定するといいと思います。
効率化=手抜き=遊ぶ時間が増える
ちょっとしたことで、かなり効率化できると思うので。。GASをちょっと勉強してみましょう!(笑)