• 作成日 : 2025年10月27日

スプレッドシートで複数ファイルをまとめるには?関数・アドオン・GASを使った効率的な統合方法

Googleスプレッドシートで複数のファイルやシートを一つにまとめる作業は、データ管理において頻繁に発生する課題です。本記事では、複数のスプレッドシートファイルを効率的に統合する方法として、IMPORTRANGE関数による基本的な連携から、便利なアドオンの活用、さらにGoogle Apps Script(GAS)を使った自動化まで、実務で即座に活用できる手法を段階的に解説します。

スプレッドシートの関数で複数ファイルをまとめる方法は?

IMPORTRANGE関数を使用すると、異なるスプレッドシートファイルからデータを取り込んで一つのファイルにまとめることができます。 この関数は、Googleスプレッドシート(略称:スプシ)の標準機能として提供されており、追加のツールやプログラミング知識なしで複数ファイルの統合が可能です。

IMPORTRANGE関数の基本的な使い方

IMPORTRANGE関数の基本構文と設定手順:

=IMPORTRANGE(“スプレッドシートのURL”, “シート名!セル範囲”)

STEP 1: まとめ先となるスプレッドシートを開く

STEP 2: データを取り込みたいセルに以下の数式を入力

=IMPORTRANGE(“https://docs.google.com/spreadsheets/d/[ファイルID]/”, “Sheet1!A1:Z100”)

STEP 3: 初回実行時に表示される「アクセスを許可」をクリック

STEP 4: 取り込み元のデータが自動的に表示される

複数シートからデータを縦に結合する方法

複数のファイルを縦方向に結合するには、QUERY関数とIMPORTRANGEを組み合わせて使用します。 この方法により、異なるファイルの同じ形式のデータを一つの表として統合できます。

縦結合の実装例:

=QUERY({

IMPORTRANGE(“URL1”, “Sheet1!A2:D”);

IMPORTRANGE(“URL2”, “Sheet1!A2:D”);

IMPORTRANGE(“URL3”, “Sheet1!A2:D”)

}, “SELECT * WHERE Col1 IS NOT NULL”, 0)

この数式の特徴
  • 波括弧 {} で複数のIMPORTRANGEを配列として結合
  • セミコロン(;)で縦方向の結合を指定
  • QUERY関数で空行を除外してクリーンなデータを作成

QUERY関数を活用した効率的なデータ統合

大量データの統合は、1つの式でまとめて取り込む方法に置き換えてください。

=QUERY({

IMPORTRANGE(“URL1″,”Sheet1!A2:D”);

IMPORTRANGE(“URL2″,”Sheet1!A2:D”);

IMPORTRANGE(“URL3″,”Sheet1!A2:D”)

},”select * where Col1 is not null”,0)

※ 初回は各ソースごとに [アクセスを許可] が必要です。

補足:スプレッドシートは1ファイル=1,000万セル上限です。統合で容量が逼迫する場合は、ファイル分割+必要時の再統合やアドオン/GASでの分散処理を検討してください。

アドオンを使って複数ファイルを簡単にまとめる方法は?

専用のアドオンを活用すると、プログラミング知識がなくても複雑な複数ファイルの統合作業を数クリックで実行できます。 Googleスプレッドシートのアドオンストアには、ファイル結合に特化した様々なツールが提供されており、用途に応じて選択可能です。

おすすめのファイル統合アドオンと特徴

おすすめアドオン(要点のみ・最新条件は公式で確認)

  • Combine Sheets(Ablebits):
    複数シートを列見出しで結合/30日間の完全機能トライアル。
  • Merge Sheets(Ablebits):
    複数表のマージ支援/試用可(詳細はマーケットプレイス参照)。
  • Sheetgo:
    スプレッドシート間の接続・自動ワークフロー/無料プランは月99転送、14日トライアルで機能拡張。
  • Power Tools(Ablebits):
    40以上のツールを統合した総合アドオン(条件は公式参照)。

Merge Sheetsアドオンの詳細な使用手順

  1. メイン表を選択。
  2. 参照(lookup)表を1つ以上選択。
  3. キー列(テーブル間で一致させる列)を指定。
  4. メイン表へ追加/更新する列を選択。
  5. 追加オプション(空セルは更新しない/非一致行を追加/更新セルを色付け/ステータス列を追加 など)を調整。
  6. Finish をクリックして実行。
    ※ 設定はシナリオとして保存でき、ワンクリックで再実行可能。定時自動実行は Process Sheets でシナリオをスケジュール。

GAS(Google Apps Script)で複数ファイルを自動的にまとめる方法は?

GASを使用すると、複数のスプレッドシートファイルの統合を完全に自動化し、定期実行や条件分岐などの高度な処理が実現できます。 プログラミングの基礎知識は必要ですが、一度設定すれば手動作業を大幅に削減できる強力なソリューションです。

基本的なGASスクリプトの作成と実行

複数ファイル統合の基本スクリプト:

javascript

function mergeMultipleSheets() {

// まとめ先のスプレッドシート

const masterSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

// 統合するファイルのIDリスト

const fileIds = [

‘1234567890abcdefg’,  // ファイル1のID

‘0987654321hijklmn’,  // ファイル2のID

‘abcdefghij1234567’   // ファイル3のID];

// ヘッダー行を設定

const headers = [‘列1’, ‘列2’, ‘列3’, ‘列4’];

masterSheet.getRange(1, 1, 1, headers.length).setValues([headers]);

let currentRow = 2;  // データ開始行

// 各ファイルからデータを取得して統合

fileIds.forEach(fileId => {

const sourceSheet = SpreadsheetApp.openById(fileId).getSheets()[0];

const sourceData = sourceSheet.getDataRange().getValues();

// ヘッダー行を除いたデータを取得

const dataWithoutHeader = sourceData.slice(1);

// まとめ先シートに書き込み

if (dataWithoutHeader.length > 0) {

masterSheet.getRange(currentRow, 1, dataWithoutHeader.length, dataWithoutHeader[0].length)

.setValues(dataWithoutHeader);

currentRow += dataWithoutHeader.length;}});

// 完了メッセージ

SpreadsheetApp.getUi().alert(‘統合が完了しました。総行数: ‘ + (currentRow – 1));}

フォルダ内の全ファイルを自動で統合する高度なスクリプト

Google Drive内の特定フォルダから自動取得:

javascript

function mergeAllFilesInFolder() {

// 対象フォルダのIDを指定

const folderId = ‘your-folder-id-here’;

const folder = DriveApp.getFolderById(folderId);

const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);

// まとめ先シートの準備

const masterSpreadsheet = SpreadsheetApp.create(‘統合データ_’ + new Date().toLocaleDateString());

const masterSheet = masterSpreadsheet.getActiveSheet();

masterSheet.setName(‘統合結果’);

let isFirstFile = true;

let currentRow = 1;

// フォルダ内の各ファイルを処理

while (files.hasNext()) {

const file = files.next();

const sourceSpreadsheet = SpreadsheetApp.open(file);

const sourceSheet = sourceSpreadsheet.getSheets()[0];

const data = sourceSheet.getDataRange().getValues();

// 最初のファイルはヘッダー付き、それ以降はデータのみ

const startRow = isFirstFile ? 0 : 1;

const dataToWrite = data.slice(startRow);

if (dataToWrite.length > 0) {

masterSheet.getRange(currentRow, 1, dataToWrite.length, dataToWrite[0].length)

.setValues(dataToWrite);

currentRow += dataToWrite.length;

// ファイル名を記録(オプション)

const fileNameColumn = dataToWrite[0].length + 1;

const fileNames = Array(dataToWrite.length).fill([file.getName()]);

masterSheet.getRange(currentRow – dataToWrite.length, fileNameColumn, dataToWrite.length, 1)

.setValues(fileNames);}

isFirstFile = false;}

// 結果の通知

console.log(‘統合完了: ‘ + masterSpreadsheet.getUrl());

return masterSpreadsheet.getUrl();}

トリガー設定による定期自動実行の実装

GASトリガーで完全自動化を実現:

STEP 1: スクリプトエディタでトリガー設定

javascript

function setupTrigger(){

const keep = new Set([‘dailyMergeFiles’]); // この原稿で管理するものだけ

ScriptApp.getProjectTriggers()

.filter(t => keep.has(t.getHandlerFunction()))

.forEach(t => ScriptApp.deleteTrigger(t));

ScriptApp.newTrigger(‘dailyMergeFiles’).timeBased().everyDays(1).atHour(9).create();}

function dailyMergeFiles() {

// エラーハンドリング付きの統合処理

try {

mergeAllFilesInFolder();

// 成功通知メール

GmailApp.sendEmail(

[email protected]’,

‘スプレッドシート統合完了’,

‘本日の統合処理が正常に完了しました。’);

} catch (error) {

// エラー通知

GmailApp.sendEmail(

[email protected]’,

‘スプレッドシート統合エラー’,

‘エラーが発生しました: ‘ + error.toString());}}

STEP 2: トリガーの種類と設定オプション

  • 時間ベース: 毎時、毎日、毎週、毎月
  • イベントベース: ファイル編集時、フォーム送信時
  • カスタム間隔: 特定の分数ごと(1分〜4週間)

複数ファイル統合時のエラー対処法とトラブルシューティングは?

複数のスプレッドシートをまとめる際に発生する一般的なエラーは、適切な対処法を知ることで迅速に解決できます。 権限エラー、データ形式の不一致、パフォーマンス問題など、よくある課題と解決策を理解しておくことが重要です。

よくあるエラーと解決方法一覧

#REF! エラー
  • 代表メッセージ:”Reference does not exist” など
  • 主な原因:
    1. 参照先シート/範囲の削除・改名・綴り誤り
    2. IMPORTRANGE の初回接続未許可/参照元への閲覧権限なし
    3. 配列結果の展開先に値や結合セルがある
  • 解決方法:
    1. 参照文字列・シート名・範囲を再確認
    2. (IMPORTRANGE)[アクセスを許可]+参照元の閲覧権限付与
    3. 出力先を空にし結合を解除
表示が続く「Loading…」
  • 性質:状態表示(恒常化すると問題)
  • 主な原因:
    1. 初回接続未許可
    2. 参照先スプレッドシートの負荷やネットワーク遅延
    3. 範囲が大きすぎる/多重ネスト
    4. 権限不足
  • 解決方法:
    1. IMPORTRANGE を短い範囲で一度接続→[アクセスを許可]
    2. QUERY で必要列だけに絞る・範囲を縮小
    3. 計算を分割/段階化
    4. 参照元の閲覧権限を付与
#N/A(Did not find value)
  • 主な原因:
    1. キーの未一致
    2. VLOOKUP が近似一致(第4引数省略/TRUE)
    3. 数値↔文字列の型不一致
    4. 前後スペース・不可視文字
  • 解決方法:
    1. データ型を統一(VALUE/TEXT)
    2. VLOOKUP は 第4引数 FALSE
    3. TRIM/CLEAN/SUBSTITUTE で正規化
    4. 必要に応じて INDEX+MATCH に置換
#ERROR!(Formula parse error)
  • 主な原因:括弧/引用符の不一致、ロケールに合わない区切り子(, と ;)、全角記号混入
  • 解決:括弧と引用符を点検、区切り子をロケールに合わせる、全角記号を半角へ
(GAS)Exceeded maximum execution time
  • 主な原因:単一実行での処理量過大/逐次 API 呼び出し過多
  • 解決:
    1. 範囲で一括取得/書込(getValues/setValues)
    2. 書式変更や set 系はまとめて実行
    3. 大規模は時間主導トリガーで分割実行・続き実行
    4. 巨大ファイルは年度/部署などで分割し、必要時に再統合
結果を展開できません(Result was not expanded because it would overwrite data)
  • 主な原因:配列数式の出力先にデータ/結合セル、または出力範囲がシート端を越える
  • 解決:出力先を空にする/結合を解除/開始セルを見直す

複数スプレッドシートの効率的な統合で業務改革を実現しよう

Googleスプレッドシートで複数ファイルをまとめる方法は、IMPORTRANGE関数による基本的な連携から、アドオンを使った簡易自動化、そしてGASによる完全自動化まで、様々な選択肢があります。小規模は関数、中規模はアドオン、大規模はGASという方針でよいですが、1ファイル=最大1,000万セルの上限や IMPORTRANGEの権限要件、揮発関数(例:INDIRECT)の多用は重くなるといった制約も踏まえて方式を選定してください。

各手法の特徴を理解し、データ量や更新頻度、チームの技術レベルに応じて最適な方法を選択することで、複数のスプレッドシートファイルの管理を大幅に効率化できます。まずは簡単な関数から始めて、必要に応じて段階的に自動化を進めていくことをお勧めします。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事