Google スプレッドシートを使っていて、複数のシート間でデータのコピーやデータ同期をしたいと思ったことはありませんか?
Google Apps Script (GAS) を使えば、この作業を簡単に自動化できます。
この記事では、スプレッドシート間でデータをコピー・同期させる方法を、操作画面の画像を交えながら詳しく解説します。
スプレッドシートの準備
まずは、同期元と同期先のスプレッドシートを準備します。
1. Google スプレッドシートを開く
GoogleドライブやGoogleアプリ一覧から、編集したいGoogleスプレッドシートを開きます。
今回は複数のシート間でデータを同期させたいため、同期元と同期先のスプレッドシートの2つを用意します。
2. スプレッドシートにデータを入力する
Googleスプレッドシートに必要なデータを入力します。
本記事では、サンプルとして下記のデータを使用します。
同期元のスプレッドシート
下記のデータをスプレッドシートのA1:C4の範囲に入力します。
商品名 | 価格 | 在庫数 |
---|---|---|
商品A | 1000 | 50 |
商品B | 1500 | 30 |
商品C | 2000 | 20 |
同期先のスプレッドシート(同期前)
下記のデータをスプレッドシートのA1:C4の範囲に入力します。
商品名 | 価格 | 在庫数 |
---|---|---|
商品A | 0 | 0 |
商品B | 0 | 0 |
商品C | 0 | 0 |
Google Apps Script で同期を行う手順
1. GASのスクリプトエディタを開く
同期元のスプレッドシートの、メニューバーの「拡張機能」を左クリックし、「Apps Script」を選択します。
「Apps Script」を選択すると、スクリプトエディタが新しいタブで開きます。
2. スクリプトを作成する(サンプルコード)
新しいスクリプトファイルが開いたら、以下のスクリプトをコピーして貼り付け、プロジェクトを保存します。
function syncSpreadsheets() {
// 同期元のスプレッドシートを開く
var sourceSpreadsheet = SpreadsheetApp.openById('ソーススプレッドシートのID');
var sourceSheet = sourceSpreadsheet.getSheetByName('シート1');
// 同期先のスプレッドシートを開く
var targetSpreadsheet = SpreadsheetApp.openById('ターゲットスプレッドシートのID');
var targetSheet = targetSpreadsheet.getSheetByName('シート1');
// 同期元のデータを取得
var sourceData = sourceSheet.getDataRange().getValues();
// 同期先にデータをコピー
targetSheet.getRange(1, 1, sourceData.length, sourceData[0].length).setValues(sourceData);
// 同期完了のログを記録
Logger.log('データの同期が完了しました。');
}
スクリプトの説明
このスクリプトは以下の手順でデータを同期します。
- 同期元と同期先のスプレッドシートを開く
- 同期元のデータを取得
- 取得したデータを同期先にコピー
- 同期完了のログを記録
1. SpreadsheetApp.openById()
:
この関数を使って、同期元と同期先のスプレッドシートをIDで開きます。
スプレッドシートのIDは、URLの一部から取得できます。
例えば、
https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=SHEET_ID
というURLの場合、SPREADSHEET_IDの部分がスプレッドシートのIDとなります。openById()
には、実際に使用するスプレッドシートのIDを入力してください。
2. getSheetByName()
:
開いたスプレッドシート内の特定のシートを名前で取得します。
ここでは両方とも’シート1‘という名前のシートを使用しています。
この部分は、実際に使用するシートの名称に合わせて変更してください。
3. getDataRange().getValues()
:
同期元シートのデータ範囲全体を2次元配列として取得します。
データ範囲を指定したい場合は、getRange("B2:C4").getValues()
のように記載することで、範囲を指定することができます。
4. getRange(1, 1, sourceData.length, sourceData.length).setValues(sourceData)
:
同期先シートの1行1列目から、取得したデータのサイズに合わせて範囲を指定し、データをセットします。
実質的には、同期元のスプレッドシートのデータを同期先にコピーしていることになります。
5. Logger.log()
:
スクリプトの実行ログにメッセージを記録します。
ここでは、データの同期が正常に完了したことを確認するために使用しています。
このスクリプトを実行すると、同期元のデータが同期先にコピーされ、両方のスプレッドシートの内容が一致するようになります。
スクリプトの実行と実行結果
最後に、スクリプトを実行して、実行結果を確認します。
1.スクリプトを実行する
スクリプトエディターのメニューバーで「syncSpreadsheets」が選択されていることを確認し、「実行」ボタンを左クリックします。
初めて実行する際には、スクリプトに対する権限の承認が求められる場合がありますので、承認してください。
「このアプリは Google で確認されていません」と表示された場合は左下の詳細をクリックすると、「無題のプロジェクト(安全ではないページ)に移動」というリンクが表示されます。
このリンクをクリックすると次のページへ遷移できます。
2.実行結果を確認する
スクリプトが正常に実行されると、同期元のデータが同期先にコピーされ、両方のスプレッドシートの内容が一致します。
まとめ
Google Apps Script を使えば、複数のスプレッドシート間でのデータのコピーやデータ同期が簡単に自動化できます。
さらに、トリガーを設定すれば、定期的に自動実行することもできます。
ぜひご自身の環境でもお試しください。
コメント