PR

【GAS】複数のスプレッドシート間でデータをコピー・同期させる方法

GAS
記事内に広告が含まれています。

Google スプレッドシートを使っていて、複数のシート間でデータのコピーやデータ同期をしたいと思ったことはありませんか?

Google Apps Script (GAS) を使えば、この作業を簡単に自動化できます。

この記事では、スプレッドシート間でデータをコピー・同期させる方法を、操作画面の画像を交えながら詳しく解説します。

スプレッドシートの準備

まずは、同期元と同期先のスプレッドシートを準備します。

1. Google スプレッドシートを開く

GoogleドライブやGoogleアプリ一覧から、編集したいGoogleスプレッドシートを開きます。

今回は複数のシート間でデータを同期させたいため、同期元と同期先のスプレッドシートの2つを用意します。

2. スプレッドシートにデータを入力する

Googleスプレッドシートに必要なデータを入力します。

本記事では、サンプルとして下記のデータを使用します。

同期元のスプレッドシート

下記のデータをスプレッドシートのA1:C4の範囲に入力します。

商品名価格在庫数
商品A100050
商品B150030
商品C200020

同期先のスプレッドシート(同期前)

下記のデータをスプレッドシートのA1:C4の範囲に入力します。

商品名価格在庫数
商品A00
商品B00
商品C00
同期元と同期先のスプレッドシートのサンプル

Google Apps Script で同期を行う手順

1. GASのスクリプトエディタを開く

同期元のスプレッドシートの、メニューバーの「拡張機能」を左クリックし、「Apps Script」を選択します。

「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. 同期元と同期先のスプレッドシートを開く
  2. 同期元のデータを取得
  3. 取得したデータを同期先にコピー
  4. 同期完了のログを記録

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」が選択されていることを確認し、「実行」ボタンを左クリックします。

GASの「実行」ボタンをクリックする手順

初めて実行する際には、スクリプトに対する権限の承認が求められる場合がありますので、承認してください。

「このアプリは Google で確認されていません」と表示された場合は左下の詳細をクリックすると、「無題のプロジェクト(安全ではないページ)に移動」というリンクが表示されます。
このリンクをクリックすると次のページへ遷移できます。

2.実行結果を確認する

スプレッドシートの同期の実行結果

まとめ

Google Apps Script を使えば、複数のスプレッドシート間でのデータのコピーやデータ同期が簡単に自動化できます。

さらに、トリガーを設定すれば、定期的に自動実行することもできます。

ぜひご自身の環境でもお試しください。

コメント

タイトルとURLをコピーしました