GASで簡単!Googleドキュメントを結合する方法
GASでGoogle ドキュメントを結合する方法
Google Apps Script(GAS)を使えば、複数のGoogle ドキュメントを一つに結合できる。
GASコードを書いてみよう
以下がGASでGoogle ドキュメントを結合するサンプルコードだ。
function mergeDocuments() {
const docIds = ['DOC_ID_1', 'DOC_ID_2'];
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();
});
// 作成したドキュメントのURLを出力
const url = targetDoc.getUrl();
Logger.log(url);
}
DocumentAppクラスは、Google ドキュメントを操作するための機能を提供する。
openById(docId)は指定したドキュメントIDでドキュメントを開き、getBody()でそのドキュメントの内容を取得する。
appendParagraph(text)でテキストを追加し、appendPageBreak()でページブレイク(新しいページにする処理)を追加する。
そして、作成したドキュメントのURLを最後にログで出力するぞ。
実践
よし、実際にやってみよう。
猫1のドキュメントと、

猫2のドキュメントのIDを指定。

実行してみると、ほれ、新しいドキュメントの誕生だ。
タイトルは引数で指定した通りの「結合されたドキュメント」。
1ページ目は猫1、

改ページ後の2ページ目に猫2だ。

練習問題: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)でフォルダ内のドキュメントを取得する。
ファイルがある限りループし、各ドキュメントの内容を取得して結合していく。