ADVERTISEMENT

【Googleドキュメント】Apps Scriptで複数ドキュメントを一括結合!1ファイル化

【Googleドキュメント】Apps Scriptで複数ドキュメントを一括結合!1ファイル化
🛡️ 超解決

複数のGoogleドキュメントを1つにまとめたいと思ったことはありませんか。プロジェクトの資料やレポートなどを個別に管理していると、全体を確認するために何度もタブを切り替える必要があります。そんなときに便利なのが、Apps Scriptを使って自動で結合する方法です。この記事では、初心者でも簡単に実践できるスクリプトの書き方をステップごとに解説します。

この方法を使えば、数十ものドキュメントを数秒で1つのファイルに統合できます。手動でコピー&ペーストする手間やミスをなくし、業務効率を大幅に向上させることが可能です。また、スクリプトは一度作れば繰り返し使えるため、定期的な結合作業も自動化できます。

それでは、具体的な手順を見ていきましょう。まずは、スクリプトを実行するための準備から始めます。

【要点】Apps Scriptで複数ドキュメントを一括結合する方法

  • スクリプトエディタを開く: Googleドキュメントの「拡張機能」メニューからApps Scriptを起動し、プロジェクトを作成します。
  • 結合用のコードを記述: 指定したフォルダ内のドキュメントを順に開き、内容を1つの新規ドキュメントにコピーする処理を実装します。
  • スクリプトを実行して結合: 専用の関数を実行すると、自動で全ドキュメントが結合され、1つのファイルが生成されます。

ADVERTISEMENT

なぜ複数ドキュメントを結合する必要があるのか

複数のGoogleドキュメントを個別に管理していると、情報の確認や共有に手間がかかります。例えば、章ごとにファイルが分かれた報告書や、各メンバーが作成した資料を1つにまとめたいケースは少なくありません。手動でコピー&ペーストする方法では、フォーマットの崩れや見落としが発生しやすく、時間もかかります。

そこで、Apps Scriptを使った自動結合が有効です。スクリプトを実行するだけで、複数のドキュメントの内容を正確に1つのファイルに統合できます。また、結合のルール(挿入順序や区切り線の追加など)も自由にカスタマイズ可能です。

この機能は、次のようなシーンで特に役立ちます。

  • プロジェクトの最終納品資料を章ごとに結合する場合
  • チームメンバーが分担して執筆した原稿を1つにまとめる場合
  • 定期的に生成されるレポートを自動で集約する場合

事前準備と前提条件

スクリプトを実行する前に、以下の環境を整えてください。

  • Googleアカウント(GoogleドキュメントとApps Scriptが利用可能なこと)
  • 結合したいドキュメントが保存されているGoogle Driveのフォルダ
  • スクリプト実行時の権限(ドキュメントの読み取り・作成、フォルダの参照)を承認できること

また、対象のドキュメントはすべて同じフォルダに保存されていると、スクリプトが処理しやすくなります。フォルダ内に結合したくないファイルがある場合は、スクリプト内でファイル名や拡張子でフィルタリングすることも可能です。

Apps Scriptでドキュメントを結合する手順

ここからは、実際にスクリプトを作成して実行する手順を説明します。コードはコピー&ペーストで使えるよう、必要最低限の内容に絞っています。

ステップ1:スクリプトエディタを開く

  1. 結合先となる新規ドキュメントを作成します。
    Googleドライブで右クリックから「その他」→「Googleドキュメント」を選び、空のドキュメントを開きます。このファイルが結合先になります。
  2. 拡張機能メニューからApps Scriptを起動します。
    開いたドキュメントのメニューバーから「拡張機能」→「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。
  3. プロジェクト名を設定します。
    エディタ上部の「無題のプロジェクト」をクリックし、わかりやすい名前(例:「ドキュメント結合スクリプト」)に変更します。

ステップ2:結合用のコードを記述する

エディタのコード編集領域に、以下のスクリプトを貼り付けます。このスクリプトは、指定したフォルダ内の全ドキュメントを開き、内容を順番に結合先のドキュメントに追加します。

function mergeDocuments() {
  var folderId = 'YOUR_FOLDER_ID'; // フォルダIDを指定
  var folder = DriveApp.getFolderById(folderId);
  var files = folder.getFilesByType(MimeType.GOOGLE_DOCS);
  
  // 結合先のドキュメントを取得(現在開いているドキュメント)
  var targetDoc = DocumentApp.getActiveDocument();
  var targetBody = targetDoc.getBody();
  
  while (files.hasNext()) {
    var file = files.next();
    var doc = DocumentApp.openById(file.getId());
    var body = doc.getBody();
    
    // 結合元の内容をすべてコピー
    var numElements = body.getNumChildren();
    for (var i = 0; i < numElements; i++) {
      var element = body.getChild(i).copy();
      var type = element.getType();
      // 段落、リスト、表などに対応
      if (type == DocumentApp.ElementType.PARAGRAPH) {
        targetBody.appendParagraph(element);
      } else if (type == DocumentApp.ElementType.LIST_ITEM) {
        targetBody.appendListItem(element);
      } else if (type == DocumentApp.ElementType.TABLE) {
        targetBody.appendTable(element);
      } else if (type == DocumentApp.ElementType.INLINE_IMAGE) {
        targetBody.appendImage(element);
      }
    }
    
    // ファイル名を区切りとして挿入(オプション)
    targetBody.appendParagraph('--- ' + file.getName() + ' ここまで ---');
  }
  
  DocumentApp.getUi().alert('結合が完了しました。');
}

コード内の「YOUR_FOLDER_ID」を、結合元のドキュメントが入っているフォルダのIDに書き換えてください。フォルダIDは、Googleドライブでフォルダを開いたときのURL末尾の英数字の部分です。

ステップ3:スクリプトを実行する

  1. 関数を選択して実行します。
    エディタ上部の関数選択ドロップダウンから「mergeDocuments」を選び、再生ボタン(▶)をクリックします。
  2. 権限を承認します。
    初回実行時は、スクリプトがドキュメントやドライブにアクセスするための許可を求められます。「許可を確認」→自分のアカウントを選択→「詳細」→「(安全ではないページ)に移動」→「許可」の順で進みます。
  3. 実行結果を確認します。
    スクリプトが正常に完了すると、アラートダイアログに「結合が完了しました。」と表示されます。結合先のドキュメントを確認すると、複数のドキュメントの内容が順に追加されているはずです。

ADVERTISEMENT

よくあるエラーと注意点

フォルダIDが間違っている場合

スクリプト内のフォルダIDが正しくないと、実行時にエラーが発生します。フォルダIDは、Googleドライブで該当フォルダを開いたときのブラウザのURLを確認してください。URLは「https://drive.google.com/drive/folders/ABC123XYZ」のような形式で、最後の「ABC123XYZ」の部分がIDです。大文字小文字も正確に入力しましょう。

結合対象のドキュメントが多すぎてタイムアウトする

Apps Scriptには実行時間の制限(6分)があります。大量のドキュメントを結合する場合は、一度に処理できる数を調整する必要があります。対処法として、スクリプトを複数回に分けて実行するか、処理するファイル数を制限するロジックを追加してください。例えば、whileループにカウンターを設けて10ファイルずつ処理する方法があります。

画像や表が正しくコピーされない

上記のスクリプトでは、段落、リストアイテム、表、画像に対応していますが、図形描画やヘッダー・フッターなどはコピーされません。これらの要素を含むドキュメントを結合する場合は、コピーする要素の種類を追加する必要があります。また、結合先のドキュメントでフォーマットが崩れる場合もあるため、結合後に手動で調整することをおすすめします。

VBAマクロとApps Scriptの比較

項目 VBAマクロ(Word) Apps Script(Googleドキュメント)
実行環境 Windows専用、Wordアプリケーションが必要 ブラウザ上で動作、OSを問わない
ファイル形式 ローカルのWord文書(.docx) クラウド上のGoogleドキュメント
共有・コラボレーション メール添付や共有フォルダが必要 リアルタイム共同編集が可能
実行時間制限 制限なし(手動停止まで) 最大6分(トリガー使用時は30分)
カスタマイズ性 豊富なオブジェクトモデル、複雑な処理も可能 JavaScriptベース、Googleサービスとの連携が容易

まとめ

今回は、Apps Scriptを使って複数のGoogleドキュメントを1つのファイルに自動結合する方法を解説しました。指定したフォルダ内のドキュメントを順に読み込み、内容をコピーする基本的なスクリプトから始め、よくあるエラーの対処法や注意点もカバーしました。このスクリプトを応用すれば、特定のファイル名だけを対象にしたり、結合後に目次を自動生成したりすることも可能です。ぜひ、日々のドキュメント管理に活用してみてください。さらに高度な自動化を目指すなら、Drive APIやAdvanced Google Servicesの利用も検討するとよいでしょう。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。