複数のGoogleドキュメントを1つのファイルにまとめる作業に手間取っていませんか。特に、章ごとに別々のドキュメントを作成した場合、後で順序を整えて結合するのは大変です。この記事では、Apps Scriptを使って複数のドキュメントを自動でマージし、章の順序を自由に制御する方法を解説します。スクリプトの具体的な書き方と実行手順を丁寧に紹介しますので、ぜひ参考にしてください。
【要点】Apps Scriptで複数Docsをマージし、章順を配列で制御する方法
- DocumentApp.openById(id): 対象のドキュメントを開くメソッドです。スクリプトで操作する最初のステップとして使用します。
- getBody().appendParagraph(): 開いたドキュメントの本文に段落を追加するメソッドです。他のドキュメントの内容を1行ずつコピーするのに使います。
- 配列で順序を定義: マージするドキュメントのIDを配列に格納し、その順番をそのまま結合順とします。章順の制御が簡単になります。
ADVERTISEMENT
目次
Apps Scriptでドキュメントマージができる仕組み
Apps ScriptはGoogleのサービスを自動化するクラウドベースのスクリプト言語です。DocumentAppサービスを利用すると、Googleドキュメントの作成や編集をプログラムから行えます。複数のドキュメントをマージするには、各ドキュメントの本文を読み取り、新しいドキュメントに段落を追加していきます。この方法なら、手動でコピー&ペーストを繰り返す必要はありません。スクリプトを実行するだけで、指定した順番に内容を結合できます。
スクリプトを使うためには、Googleアカウントでログインした状態で、ドキュメントの「拡張機能」メニューからスクリプトエディタを開きます。そこで自分でコードを記述して実行します。承認が必要な場合がありますが、初回のみ許可すれば以降はスムーズに動作します。
複数ドキュメントをマージする基本手順
ここでは、最もシンプルなマージスクリプトを作成します。まず、マージしたいドキュメントのIDを取得し、スクリプトに記述します。以下の手順に従って進めてください。
ステップ1: スクリプトエディタを起動する
- ドキュメントを開く
マージ先となる新しいドキュメントを用意します。このドキュメントに各章の内容が結合されます。 - スクリプトエディタを開く
メニューの「拡張機能」から「Apps Script」をクリックします。空のスクリプトファイルが表示されます。
ステップ2: マージするドキュメントのIDを取得する
- 各ドキュメントのURLを確認
マージしたいドキュメントをブラウザで開き、URLの「d/」と「/edit」の間にある英数字の文字列がIDです。これをメモします。 - IDの例
URLが「https://docs.google.com/document/d/1AbcDefGhIjKlMnOpQrStUvWxYz/edit」の場合、IDは「1AbcDefGhIjKlMnOpQrStUvWxYz」です。
ステップ3: スクリプトコードを記述する
- コードを記述する
以下のスクリプトをエディタに貼り付けます。関数名はmergeDocsとします。
function mergeDocs() {
// マージ先のドキュメントID (新しいドキュメント)
var targetId = 'あなたのマージ先ドキュメントID';
// マージ元のドキュメントIDを配列で指定 (順序通りに結合)
var sourceIds = [
'章1のドキュメントID',
'章2のドキュメントID',
'章3のドキュメントID'
];
var targetDoc = DocumentApp.openById(targetId);
var targetBody = targetDoc.getBody();
for (var i = 0; i < sourceIds.length; i++) {
var sourceDoc = DocumentApp.openById(sourceIds[i]);
var sourceBody = sourceDoc.getBody();
var paragraphs = sourceBody.getParagraphs();
for (var j = 0; j < paragraphs.length; j++) {
var text = paragraphs[j].getText();
if (text !== '') {
targetBody.appendParagraph(text);
}
}
}
}
ステップ4: スクリプトを実行する
- 実行して承認
ツールバーの「実行」ボタンをクリックします。初回は権限の承認を求められますので、「許可」をクリックします。 - 結果を確認
スクリプトが正常に終了すると、マージ先のドキュメントに各章の内容が順に追記されています。
章順を制御する方法
先ほどのスクリプトでは、sourceIds配列の順番がそのまま結合順になります。この配列を変更するだけで、簡単に章の順序を制御できます。また、特定の章だけを結合したい場合も、配列から該当のIDを削除するだけです。
配列の順番を変える
例えば、章2を最初に持ってきたい場合は、sourceIdsの先頭に章2のIDを移動します。以下のように記述します。
var sourceIds = [
'章2のドキュメントID',
'章1のドキュメントID',
'章3のドキュメントID'
];
この変更だけで、結合後のドキュメントは章2から始まります。
条件に応じて動的に順序を変更する
スクリプト内で配列を並べ替える関数を組み込めば、より柔軟な制御が可能です。例えば、ドキュメントのタイトルや作成日時でソートすることもできます。ただし、この記事では基本的な配列操作に限定して説明します。
ADVERTISEMENT
注意点とよくあるエラー
権限エラーが発生する場合
スクリプトを実行するには、対象のドキュメントへのアクセス権が必要です。マージ元とマージ先のドキュメントがすべて自分が編集可能な状態であることを確認してください。特に、他のユーザーから共有されたドキュメントは、適切な権限がないとエラーになります。
大量のドキュメントを扱う際の制限
Apps Scriptには1回の実行時間に制限があります(通常6分)。あまりに多くのドキュメントを一度にマージしようとすると、タイムアウトする可能性があります。その場合は、分割して実行するか、処理を最適化してください。
書式が失われる問題
上記のスクリプトは段落のテキストのみをコピーするため、太字や箇条書き、表などの書式は保持されません。書式も維持したい場合は、より高度なスクリプトが必要です。例えば、getParagraphs()の代わりにgetChildElements()を使用して、要素の種類を判断しながらコピーする方法があります。
手動マージとスクリプトマージの比較
| 項目 | 手動マージ | スクリプトマージ |
|---|---|---|
| 作業時間 | ドキュメント数に比例して増加 | 数秒で完了 |
| 順序制御 | 手動で並べ替えが必要 | 配列の順序で簡単変更 |
| 再現性 | 毎回手作業でミスのリスク | スクリプトを実行するだけ |
| 書式維持 | 手動で調整可能 | 追加のコードが必要 |
まとめ
この記事では、Apps Scriptを使って複数のGoogleドキュメントを自動でマージする方法を紹介しました。sourceIds配列の順序を変更するだけで、章の順序を自由に制御できます。初めは基本のスクリプトを試し、必要に応じて書式維持やエラー処理を追加してみてください。また、同様のテクニックは、報告書の自動生成やテンプレートの結合などにも応用できます。ぜひ、実際のプロジェクトで活用してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
SPONSORED
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】音声入力が認識されない時の対処!マイク権限の確認
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】表内の文字を縦中央揃えにする方法!セル内配置
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】PDFからDocsへ変換する方法!OCR取り込みと精度
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
