【完全ガイド】GASで複数スプレッドシートを統合・自動化する方法|初心者向けに徹底解説!

「バラバラに管理されているスプレッドシート、まとめるのが地獄…」
「毎回コピペして統合するのがめんどくさい!」

そんな悩みを解決するのが、Google Apps Script(GAS)を使ったスプレッドシート統合自動化です!

この記事では、初心者でもできる
「GASで複数スプレッドシートをまとめて統合する方法」を、サンプルコード付きでわかりやすく解説します!

これを読めば、面倒なデータ統合作業から完全に解放されます!


1. なぜGASでスプレッドシート統合を自動化するべきなのか?

スプレッドシートを手作業で統合していると、

  • データの抜け漏れが発生

  • コピー&ペーストミスが起きる

  • そもそも作業に膨大な時間がかかる

といった問題が頻発します。

GASを使えば、

  • ボタン1つで全ファイルからデータを吸い上げ

  • 自動で1つのシートにまとめる

  • 更新もスケジュール実行できる

つまり、統合作業ゼロで、最新データを即活用できる状態が実現するのです!


2. 【準備編】GAS統合自動化に必要なもの

  • Googleアカウント

  • 統合したい複数のスプレッドシート

  • 統合先のスプレッドシート(まとめる場所)

  • Google Apps Script(GAS)

ブラウザだけで完結するので、
特別なツールは不要です!


3. 【設計編】GASで複数スプレッドシートを統合する流れ

まずはざっくりとしたフローを把握しましょう。

■ 基本フロー

  1. 統合対象シート(またはファイル)のID・URLを取得

  2. GASでそれぞれのデータを取得

  3. 必要な形式でデータを並べて統合

  4. 毎回上書き or 追記して管理

これさえ押さえておけば、どんなデータ管理スタイルにも対応できます!


4. 【基本編】GASでスプレッドシート統合を自動化するサンプル

さっそく、実際に動かしてみましょう!


ステップ① Apps Scriptエディタを開く

統合先スプレッドシートを開いて、
「拡張機能」→「Apps Script」→「新しいプロジェクト作成」


ステップ② サンプルスクリプトを書く

複数ファイルのデータを1つのシートに統合する例

function mergeSheets() {
  const fileIds = [
    'ファイルID1',
    'ファイルID2',
    'ファイルID3'
  ];
  
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  targetSheet.clearContents(); // まずクリア
  
  let headerWritten = false;
  let targetRow = 1;
  
  fileIds.forEach(id => {
    const sourceSheet = SpreadsheetApp.openById(id).getSheets()[0]; // それぞれの最初のシートを対象
    const data = sourceSheet.getDataRange().getValues();
    
    if (!headerWritten) {
      targetSheet.getRange(targetRow, 1, data.length, data[0].length).setValues(data);
      headerWritten = true;
      targetRow += data.length;
    } else {
      targetSheet.getRange(targetRow, 1, data.length - 1, data[0].length)
        .setValues(data.slice(1)); // ヘッダーを飛ばして貼り付け
      targetRow += data.length - 1;
    }
  });
}

これを実行すると、

  • 複数のスプレッドシートから

  • データを1つのシートにまとめる

  • 最初のファイルだけヘッダーを残し、以降はデータのみ統合

という流れを自動で処理してくれます!


5. 【応用編】さらに強力な統合機能を追加しよう!


✅ フォルダ内すべてのスプレッドシートを自動統合

フォルダ単位でまとめたい場合も簡単!

function mergeFromFolder() {
  const folderId = 'フォルダID';
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
  
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  targetSheet.clearContents();
  
  let headerWritten = false;
  let targetRow = 1;
  
  while (files.hasNext()) {
    const file = files.next();
    const sourceSheet = SpreadsheetApp.openById(file.getId()).getSheets()[0];
    const data = sourceSheet.getDataRange().getValues();
    
    if (!headerWritten) {
      targetSheet.getRange(targetRow, 1, data.length, data[0].length).setValues(data);
      headerWritten = true;
      targetRow += data.length;
    } else {
      targetSheet.getRange(targetRow, 1, data.length - 1, data[0].length)
        .setValues(data.slice(1));
      targetRow += data.length - 1;
    }
  }
}

これで、

  • 特定フォルダに新しいシートが追加されても

  • 自動的に統合対象に反映!

になります!


✅ データ整形も同時にやる

例えば、

  • 日付フォーマットを統一

  • 数字列を数値型に変換

  • 不要な空白行を除去

などのクレンジング処理も統合時に一緒に実装可能です。


6. 【運用編】統合自動化を安定運用するポイント


✔️ 元データ形式を揃える

列の順番や型(数値・文字列)がバラバラだと、統合時にエラーが出ます。
各ファイルで必ずフォーマットを統一しておきましょう!


✔️ トリガー設定で定期統合

毎朝7時に自動統合 → ダッシュボード更新、
などの運用もGASの時間主導型トリガー設定で実現可能!


✔️ エラーハンドリングも忘れずに

ファイル取得エラーやデータ不整合に備えて、ログ出力や通知メールを設定しておくと安心です!


7. まとめ|GASで複数スプレッドシートの統合を自動化して、作業ゼロを目指そう!

GASを使えば、

  • 複数ファイルからデータ吸い上げ

  • 手動ミスゼロで統合

  • 定期実行で常に最新状態

という、最強の統合フローが誰でも構築できます!

まずはこの記事の基本スクリプトを動かしてみて、
慣れてきたら

  • フォルダ監視型統合

  • 条件フィルタリング

  • 自動ダッシュボード作成

など、どんどん機能強化にチャレンジしてみてください!

Shop now