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が出力されます。同一フォルダ内に同じ名前のファイルが存在する場合は、新しいファイルで上書きされます。これを防ぐには、スクリプト内でファイル名に日時や連番を追加するなどの対策が必要です。例えば、fileNameにnew Date().getTime()を連結することで、ユニークな名前にできます。
ADVERTISEMENT
手動分割とスクリプトによる自動分割の比較
| 方法 | 作業時間(10章の場合) | 正確性 | 繰り返し時の手間 |
|---|---|---|---|
| 手動でコピー&PDF保存 | 約30分 | 見落としやミスが発生しやすい | 毎回同じ作業が必要 |
| Apps Script自動分割 | 約1分(初回設定後) | 正確で安定 | スクリプトを実行するだけ |
この比較表からわかるように、自動化のメリットは非常に大きいです。特に複数の章を頻繁に配布する場合には、スクリプトを使うことで大幅な効率化が期待できます。
まとめ
Apps Scriptを利用することで、Googleドキュメントの章ごとPDF分割を自動化できます。見出し1を基準に各章を別ファイルとして出力するスクリプトの作成手順を解説しました。このスクリプトを応用すれば、見出し2や見出し3を基準にした分割や、特定のキーワードで区切る処理にも改造できます。ぜひ実際のドキュメントで試して、資料作成の効率を向上させてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
SPONSORED
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】音声入力が認識されない時の対処!マイク権限の確認
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】表内の文字を縦中央揃えにする方法!セル内配置
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】PDFからDocsへ変換する方法!OCR取り込みと精度
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
