GASで簡単!Googleドキュメントを結合する方法
Google ドキュメントを手動で結合するのは面倒だな… GASでできる方法はないかな?

猫男

catman
もちろん、GASでGoogle ドキュメントを結合する方法がある。catmanが教えてやろう!
GASでGoogle ドキュメントを結合する基本
Google Apps Script(GAS)を使えば、複数のGoogle ドキュメントを一つに結合できる。まずは、基本的な設定をしよう。
GASプロジェクトをセットアップする
GASプロジェクトを作成したら、スクリプトエディタで以下のようにセットアップしよう。
function myFunction() {
// ここにコードを書く
}
GASエディタを開き、新しいプロジェクトを作成する。まずはテンプレートを用意しよう。
Google ドキュメントIDを取得する
複数のドキュメントを結合するには、それぞれのドキュメントIDを取得する必要がある。
各ドキュメントのURLの中から、ドキュメントIDをコピーしよう。
URLのこの部分がIDだ:docs.google.com/document/d/ドキュメントID/edit
GASでドキュメントを結合するステップ
次に、各ドキュメントの内容を取得し、それを一つの新しいドキュメントに結合する方法を紹介しよう。
GASコードを書いてみよう
以下がGASでGoogle ドキュメントを結合するサンプルコードだ。
function mergeDocuments() {
const docIds = ['DOC_ID_1', 'DOC_ID_2']; // 結合したいドキュメントのIDをここに
const targetDoc = DocumentApp.create('結合されたドキュメント');
const targetBody = targetDoc.getBody();
docIds.forEach(id => {
const doc = DocumentApp.openById(id);
const body = doc.getBody();
targetBody.appendParagraph(body.getText());
targetBody.appendPageBreak();
});
}
DocumentAppクラスは、Google ドキュメントを操作するための機能を提供する。
openById(docId)は指定したドキュメントIDでドキュメントを開き、getBody()でそのドキュメントの内容を取得する。
appendParagraph(text)でテキストを追加し、appendPageBreak()でページブレイク(新しいページにする処理)を追加する。
練習問題:GASで特定のフォルダ内の全ドキュメントを結合しよう
特定のフォルダ内にあるすべてのGoogle ドキュメントを結合するスクリプトを書いてみてください。
解答・解説
function mergeDocumentsFromFolder(folderId) {
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFilesByType(MimeType.GOOGLE_DOCS);
const targetDoc = DocumentApp.create('フォルダから結合されたドキュメント');
const targetBody = targetDoc.getBody();
while (files.hasNext()) {
const file = files.next();
const doc = DocumentApp.openById(file.getId());
const body = doc.getBody();
targetBody.appendParagraph(body.getText());
targetBody.appendPageBreak();
}
}
DriveApp.getFolderById(folderId)で対象のフォルダを取得し、getFilesByType(MimeType.GOOGLE_DOCS)でフォルダ内のドキュメントを取得する。
ファイルがある限りループし、各ドキュメントの内容を取得して結合していく。
スゴイ!GASでこんなに簡単にGoogle ドキュメントを結合できるとは思わなかった!

猫男

catman
これでドキュメントの結合作業が格段に楽になるさ。GASを使いこなして、効率的に作業を進めていこう!