【GAS】Google Spread Sheetの内容を他のシートに取り込む データ連携【コピペプログラミング】

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】Google Driveのフォルダ内のファイル名、URLを取得する汎用版【コピペプログラミング】
コピペプログラミング このスクリプトを、SpreadSheetのマクロ風にメニューに表示させて、フォルダのURLをポップアップのメ...
【GAS】Google App Script の 小ネタ 集 【コピペでプログラミング】
Google は えらい(笑) うちらの仲間内では、Map関係は、Google派とOpenstreetMap派がいたりするんですが。。G-...

このあたりを参考にしてください。

コピペでプログラミング

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をちょっと勉強してみましょう!(笑)