長いGoogleドキュメントを章ごとに分割して保存したいと思ったことはありませんか。章単位でファイルを管理できれば、共同編集や公開の際に便利です。手動でコピー&ペーストを繰り返すのは時間がかかり、ミスも起こりやすいものです。この記事では、Apps Scriptを使ってドキュメントをセクション単位で自動分割する方法を解説します。
【要点】Apps Scriptでドキュメントを章ごとに自動分割する方法
- スクリプトエディタの開き方: Googleドキュメントの「拡張機能」メニューから「Apps Script」を開きます。
- 分割用のカスタム関数: 見出し(例:見出し1)で区切られた各セクションを新しいドキュメントとして作成します。
- 実行と権限の承認: スクリプトを実行すると、Googleドライブに章ごとのファイルが自動生成されます。
ADVERTISEMENT
目次
Apps Scriptがドキュメントを分割する仕組み
Googleドキュメントは、Apps Scriptを使ってプログラム的に操作できます。スクリプトはドキュメントの本文を解析し、特定のスタイル(例:見出し1)が適用された段落を区切りとして認識します。その区間ごとに新しいドキュメントを作成し、元のドキュメントから該当部分の内容をコピーします。これにより、手作業では数十分かかる作業が数秒で完了します。スクリプトは一度作成すれば再利用可能で、同じ形式のドキュメントなら何度でも使えます。
章ごとに分割する具体的な手順
スクリプトエディタを開く
- 分割したいGoogleドキュメントを開く
まず、章ごとに分割したいドキュメントをブラウザで開きます。 - 拡張機能メニューからApps Scriptを選択
メニューバーの「拡張機能」をクリックし、「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。 - プロジェクト名を設定(任意)
左上の「無題のプロジェクト」をクリックして、わかりやすい名前(例:「章分割スクリプト」)を付けます。
分割用のスクリプトコードを記述する
- デフォルトのコードを削除
エディタに表示されている function myFunction() {} をすべて削除します。 - 以下のコードを貼り付ける
次のスクリプトをコピーしてエディタに貼り付けます。このコードは、見出し1(Heading 1)で区切られたセクションを新しいドキュメントとして保存します。
function splitDocumentBySections() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var sections = [];
var currentSection = [];
var sectionTitle = "";
var paragraphs = body.getParagraphs();
for (var i = 0; i < paragraphs.length; i++) {
var para = paragraphs[i];
if (para.getHeading() === DocumentApp.Heading.HEADING1) {
if (currentSection.length > 0) {
sections.push({title: sectionTitle, content: currentSection});
currentSection = [];
}
sectionTitle = para.getText();
currentSection.push(para);
} else {
currentSection.push(para);
}
}
if (currentSection.length > 0) {
sections.push({title: sectionTitle, content: currentSection});
}
for (var j = 0; j < sections.length; j++) {
var newDoc = DocumentApp.create(sections[j].title);
var newBody = newDoc.getBody();
for (var k = 0; k < sections[j].content.length; k++) {
var sourcePara = sections[j].content[k];
var newPara = newBody.appendParagraph(sourcePara.copy());
newPara.setHeading(sourcePara.getHeading());
// 他の属性(フォント、サイズなど)はcopy()で引き継がれます
}
newDoc.saveAndClose();
}
DocumentApp.getUi().alert('分割が完了しました。ドライブを確認してください。');
}
スクリプトを実行する
- 実行ボタンをクリック
ツールバーの「▶ 実行」ボタンをクリックします。最初の実行時には権限の承認ダイアログが表示されます。 - 権限を承認する
「権限を確認」をクリックし、自分のGoogleアカウントを選択します。「このアプリはGoogleで確認されていません」と表示されますが、「詳細」をクリックして「無題のプロジェクト(安全ではないページ)に移動」を選択し、許可します。スクリプトがドキュメントとドライブにアクセスするために必要な権限です。 - 実行結果を確認
スクリプトが正常に終了すると、「分割が完了しました。ドライブを確認してください。」というダイアログが表示されます。Googleドライブを開くと、各見出しをタイトルに持つ新しいドキュメントが作成されています。
スクリプト使用時の注意点とよくある失敗
見出しスタイルが統一されていない場合
スクリプトは「見出し1」の段落を章の開始とみなします。もし章タイトルに「見出し2」を使っていたり、手動でフォントサイズを大きくしているだけの場合は分割されません。事前にすべての章タイトルを「見出し1」に統一しておきましょう。スタイルの変更は、該当テキストを選択してツールバーから「見出し1」を選ぶだけで完了します。
実行時間の制限に注意
Apps Scriptには1回の実行で6分間という制限があります。非常に長いドキュメント(数百ページ)を分割する場合、途中でタイムアウトする可能性があります。その場合は、スクリプトを改良してバッチ処理にするか、事前にドキュメントをいくつかに分割しておいてください。
画像や表が正しくコピーされない
上記のスクリプトは段落単位でコピーします。画像や表は段落ではないため、正しく転写されない場合があります。画像や表が重要な場合は、スクリプトを拡張してインライン画像やテーブルもコピーする必要があります。例えば、画像は getInlineImages() で取得できます。
ドキュメントが多数生成される場合のファイル名
新しいドキュメントのタイトルは、元のドキュメントの見出し1のテキストがそのまま使われます。同じタイトルが複数あると、Googleドライブ上で「(1)」などの接尾語が自動で付きます。重複を避けるため、見出し1はユニークにしておきましょう。
ADVERTISEMENT
手動分割とスクリプト分割の比較
| 項目 | 手動分割 | スクリプト分割 |
|---|---|---|
| 所要時間 | 章の数×5〜10分 | 数秒 |
| 正確性 | コピーミスが発生しやすい | 高い(統一的な処理) |
| 繰り返しのしやすさ | 毎回手作業が必要 | スクリプトを保存すれば何度でも実行可能 |
| 画像・表の保持 | 手動でコピーすれば可能 | スクリプトの改良が必要 |
まとめ
Apps Scriptを使うことで、Googleドキュメントの章ごとの分割が一瞬で完了します。今回紹介したスクリプトは、見出し1を基準に自動で新しいドキュメントを生成します。このスクリプトをベースに、画像や表のコピーに対応したバージョンに改良することも可能です。ぜひご自身のドキュメントで試してみてください。繰り返し実行したい場合は、スクリプトエディタのトリガー機能を使って定期的に自動分割することもできます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】罫線を縦・横に挿入する方法!Wordの罫線機能との比較
- 【Googleドキュメント】共有後に閲覧履歴を確認!誰がいつ開いたかの追跡
- 【Googleドキュメント】共有先の名前が表示されない時の対処!匿名動物アイコンの正体
