Google Docsの箇条書きのインデントを調整するGoogle Apps Script
背景
Google Docsでは段落スタイルから見出しごとに指定したスタイルを適用できます。しかし,2020/12現在,「箇条書き」や「番号付きリスト」にはスタイルを指定できないため,インデントはrulerで個別に調整しなければなりません。
そこで省力化のために,Google Apps Scriptを用いて,インデントを自動設定するスクリプトを書きました。
適用例
Before
After
上の例はDropbox paperを模したインデント幅にしています。私的にはAfterが読みやすいですが,ここらへんの好みは人に依ると思います。インデント幅はスクリプトの変数から任意に設定可能です。
ソースコード
使い方や関数の説明などはソースコードの次に記載しています。
function onOpen() { const ui = DocumentApp.getUi() .createMenu('MyScript') .addItem('Indent adjustment', 'indent') .addToUi(); } function indent() { // Definition of rules // <levelDistance*(level+1)>●<stringDistance>level 0 const levelDistance = 21.0; const stringDistance = 16.0; const rules = []; for (let i = 0; i < 9; i++) { //Max lavel : 8 (Definition of Google Documents) indentStart = (i + 1) * levelDistance; indentFirstLine = indentStart - stringDistance; rules.push([indentStart, indentFirstLine]); } const document = DocumentApp.getActiveDocument(); const body = document.getBody(); const listItems = body.getListItems(); for (const listItem of listItems) { const level = listItem.getNestingLevel(); const rule = rules[level]; listItem.setIndentStart(rule[0]); listItem.setIndentFirstLine(rule[1]); } }
- 使い方
- Google Docsのメニューバーで
ツール
>スクリプトエディタ
を開き,以下をコピペ - ページを再読み込み
-
MyScript
>Indent adjustment
を実行するとドキュメント内の「箇条書き」,「番号付きリスト」のインデントが変更される
- Google Docsのメニューバーで
- 簡単な説明
- onOpen関数: メニューバーに
MyScript
>Indent adjustment
を追加 - indent関数: アクティブドキュメント内の「箇条書き」,「番号付きリスト」のインデントを変更
- onOpen関数: メニューバーに
- 設定
- indent関数の
levelDistance
とstringDistance
にてインデント幅を設定可能 - 変数の意味
<levelDistance*(level+1)>●<stringDistance>level 0
- indent関数の
残課題
- Glyph(箇条書きの黒丸)が文字に対して大きすぎるため小さくしたい
- 他Documentへの適用