【Googleドキュメント】Apps Scriptで章ごとPDFを別ファイル化!章単位の配布資料

【Googleドキュメント】Apps Scriptで章ごとPDFを別ファイル化!章単位の配布資料
🛡️ 超解決

Googleドキュメントで章ごとに分かれた資料を配布したい場合、手動でコピーしてPDFに保存するのは大きな手間です。Apps Scriptを使えば、1つのドキュメントから見出し単位で自動的にPDFを分割し、別ファイルとして保存できます。この記事では、その具体的なスクリプトと設定手順を詳しく解説します。

この方法をマスターすれば、授業の配布資料や会議のセクション別資料をボタン一つで作成できるようになります。手作業によるミスを減らし、作業時間を大幅に短縮できます。

【要点】Apps Scriptで章ごとPDF分割を実現する3つのステップ

  • 見出しスタイルの統一: 分割の基準となる見出し(例:見出し1)をドキュメント全体で一貫して使用します。
  • Apps Scriptによる自動処理: スクリプトが各章の内容を別のドキュメントにコピーし、PDFとしてGoogleドライブに保存します。
  • 出力先の指定と実行: スクリプト内で出力フォルダのIDを指定し、一度実行するだけで全章のPDFを生成できます。

ADVERTISEMENT

章ごとPDF分割の仕組みと準備

このスクリプトは、Googleドキュメントの見出しスタイルを利用して章の区切りを判定します。見出し1(Heading 1)を章のタイトルとみなし、見出し1が現れるたびに新しいPDFファイルを作成します。そのため、事前にドキュメント内で各章のタイトルに見出し1を適用しておく必要があります。

スクリプトの流れは以下の通りです。まず、アクティブなドキュメントの本文を取得し、すべての段落をリスト化します。次に、見出し1の段落を見つけるたびに、その内容を新しい一時的なドキュメントにコピーし、最後にそのドキュメントをPDFとして指定フォルダに保存します。一時ドキュメントは実行後に削除されます。

このスクリプトを実行するには、GoogleドライブのフォルダIDを事前に取得しておく必要があります。また、スクリプトの実行には権限承認が必要です。これらの準備は後述の手順で行います。

章ごとPDFを別ファイル化する具体的な手順

手順1:Apps Scriptエディタを開く

まず、分割したいGoogleドキュメントを開きます。メニューから「拡張機能」→「Apps Script」をクリックしてエディタを起動します。プロジェクト名は任意の名前(例:「章分割PDF出力」)に変更しておくと管理しやすくなります。

手順2:スクリプトコードを記述する

エディタが開いたら、既存のコードをすべて削除し、以下のスクリプトを貼り付けます。このスクリプトは、見出し1で区切られた各セクションを個別のPDFとして出力します。

function splitChaptersToPDF() {

var doc = DocumentApp.getActiveDocument();

var body = doc.getBody();

var paragraphs = body.getParagraphs();

var folderId = 'YOUR_FOLDER_ID'; // 出力先のフォルダIDに置き換える

var folder = DriveApp.getFolderById(folderId);

var chapterCount = 0;

var currentChapterDoc = null;

for (var i = 0; i < paragraphs.length; i++) {

var par = paragraphs[i];

if (par.getHeading() === DocumentApp.ParagraphHeading.HEADING1) {

if (currentChapterDoc) {

saveAsPDF(currentChapterDoc, folder);

DriveApp.getFileById(currentChapterDoc.getId()).setTrashed(true);

}

currentChapterDoc = DocumentApp.create('temp_chapter_' + chapterCount);

chapterCount++;

var newBody = currentChapterDoc.getBody();

newBody.appendParagraph(par.getText()).setHeading(DocumentApp.ParagraphHeading.HEADING1);

} else if (currentChapterDoc) {

var newBody = currentChapterDoc.getBody();

newBody.appendParagraph(par.getText());

}

}

if (currentChapterDoc) {

saveAsPDF(currentChapterDoc, folder);

DriveApp.getFileById(currentChapterDoc.getId()).setTrashed(true);

}

}

function saveAsPDF(tempDoc, folder) {

var pdfBlob = tempDoc.getBlob().getAs('application/pdf');

var fileName = tempDoc.getBody().getParagraphs()[0].getText() + '.pdf';

folder.createFile(pdfBlob).setName(fileName);

}

このコードでは、YOUR_FOLDER_IDの部分を実際のGoogleドライブのフォルダIDに書き換えてください。フォルダIDは、ドライブで対象フォルダを開いたときのURL末尾の英数字の部分です。

手順3:スクリプトを実行してPDFを作成する

コードを貼り付けたら、保存ボタン(フロッピーディスクのアイコン)をクリックします。次に、実行ボタン(三角の再生アイコン)をクリックすると、権限の承認画面が表示されます。自分のGoogleアカウントを選択し、「許可」をクリックしてください。これでスクリプトが実行され、指定したフォルダに各章のPDFファイルが保存されます。

出力されるPDFファイル名は、各章の最初の見出し1のテキストになります。例えば「第1章 はじめに」という見出し1があれば、その章のPDFファイル名は「第1章 はじめに.pdf」となります。

このスクリプトを活用する際の注意点

見出しスタイルが統一されていない場合の動作

このスクリプトは、見出し1(HEADING1)のみを章の区切りとして認識します。そのため、他の見出しレベル(見出し2など)や、手動でフォントサイズを大きくしただけの段落は無視されます。分割を正しく行うには、必ず各章のタイトルに見出し1を適用してください。スタイルが統一されていないと、想定外の分割や内容の欠落が発生します。

大量の章がある場合の実行時間制限

Apps Scriptには1回の実行につき6分間の時間制限があります。章の数が非常に多い場合や、1章あたりのページ数が多い場合は、スクリプトがタイムアウトする可能性があります。その場合は、ドキュメントを複数に分割してからスクリプトを実行するか、スクリプトを改良して処理を中断・再開できるようにする必要があります。通常の利用(数十章程度)であれば問題なく動作します。

出力先フォルダの指定と上書き防止

スクリプト内で指定したフォルダにPDFが出力されます。同一フォルダ内に同じ名前のファイルが存在する場合は、新しいファイルで上書きされます。これを防ぐには、スクリプト内でファイル名に日時や連番を追加するなどの対策が必要です。例えば、fileNamenew Date().getTime()を連結することで、ユニークな名前にできます。

ADVERTISEMENT

手動分割とスクリプトによる自動分割の比較

方法 作業時間(10章の場合) 正確性 繰り返し時の手間
手動でコピー&PDF保存 約30分 見落としやミスが発生しやすい 毎回同じ作業が必要
Apps Script自動分割 約1分(初回設定後) 正確で安定 スクリプトを実行するだけ

この比較表からわかるように、自動化のメリットは非常に大きいです。特に複数の章を頻繁に配布する場合には、スクリプトを使うことで大幅な効率化が期待できます。

まとめ

Apps Scriptを利用することで、Googleドキュメントの章ごとPDF分割を自動化できます。見出し1を基準に各章を別ファイルとして出力するスクリプトの作成手順を解説しました。このスクリプトを応用すれば、見出し2や見出し3を基準にした分割や、特定のキーワードで区切る処理にも改造できます。ぜひ実際のドキュメントで試して、資料作成の効率を向上させてください。

ADVERTISEMENT

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

超解決 第一編集部

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

SPONSORED