GASで簡単!Googleドキュメントを結合する方法

Google ドキュメントを手動で結合するのは面倒だな… GASでできる方法はないかな?
猫男
猫男
catman
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
catman
これでドキュメントの結合作業が格段に楽になるさ。GASを使いこなして、効率的に作業を進めていこう!