BLOGサブスレッドの日常

2019.02.27

Googleドキュメントのリスト項目のグリフが制御できない

tama

今日はGoogleドキュメントのお話をしたいと思います。tamaです。

Googleスプレッドシートでスクリプト(GAS)を使うというネタはよく出てくるんですが、
Googleドキュメントを使う事例ってあまり見つからなくて、ちょっとハマったのでご紹介。

ゴールはこんなのです。

リスト項目は Body.appendListItem() で作ることができ、子階層にインデントを下げるのは ListItem.setNestingLevel() です。

  var body = DocumentApp.getActiveDocument().getBody();
  body.appendListItem('リスト項目');
  body.appendListItem('子項目').setNestingLevel(1);
  body.appendListItem('孫階層').setNestingLevel(2);

結果:

勝手に番号付リストになるのでグリフを指定して箇条書きにしたいと思います。

  var body = DocumentApp.getActiveDocument().getBody();
  body.appendListItem('リスト項目').setGlyphType(DocumentApp.GlyphType.BULLET);
  body.appendListItem('子項目').setNestingLevel(1).setGlyphType(DocumentApp.GlyphType.HOLLOW_BULLET);
  body.appendListItem('孫階層').setNestingLevel(2).setGlyphType(DocumentApp.GlyphType.SQUARE_BULLET);

結果:

孫項目だけ箇条書きになりました。
こちらによると最後にまとめて ListItem.setGlyphType() する必要があるようです。

  var body = DocumentApp.getActiveDocument().getBody();
  var level1 = body.appendListItem('リスト項目');
  var level2 = body.appendListItem('子項目').setNestingLevel(1);
  var level3 = body.appendListItem('孫階層').setNestingLevel(2);
  level1.setGlyphType(DocumentApp.GlyphType.BULLET);
  level2.setGlyphType(DocumentApp.GlyphType.HOLLOW_BULLET);
  level3.setGlyphType(DocumentApp.GlyphType.SQUARE_BULLET);

結果:

できました!
ちなみにこのあともう一度でも Body.appendListItem() を呼ぶとグリフの設定がリセットされてしまいます。

CalendarAppSpreadsheetApp を使ってGoogleドキュメントに議事録やドキュメント、仕様書を半自動生成するときなんかに有用かと思います。

この記事を書いた人

tama