kakakakakku blog

Weekly Tech Blog: Keep on Learning!

python-pptx で PowerPoint の「非表示スライド」を判定する

Python で PowerPoint を操作するライブラリ python-pptx は本当に便利で,前に「発表者ノート」を抽出するサンプルコードを紹介したけど,引き続き今も使っている.PowerPoint ファイルの文章レビューを自動化したり,業務で使うスクリプトも増えてきた.作業効率アップにも大きく貢献している.

kakakakakku.hatenablog.com

「非表示スライド」を除外する

最近 python-pptx「非表示スライド」を処理対象から除外する必要があり,ドキュメントを読んだけど,Slide オブジェクトには is_hidden のようなプロパティはなさそうだった.しかし python-pptx の仕組みを調べていたら,Slide オブジェクトの内部的な Schema 構造に show という属性を発見した.

<xsd:complexType name="CT_Slide">
  <xsd:attribute name="show" type="xsd:boolean" default="true"/>
</xsd:complexType>

そこで Slide オブジェクトに対して _element.get('show') を実装すれば「非表示スライド」を判定できるようになる.動作確認をしたところ,返り値は None(通常)と '0'(非表示)だった.サンプルコード title.py を載せておく.

from pptx import Presentation

presentation = Presentation('example.pptx')

for slide in presentation.slides:
    if slide._element.get('show') is None:
        print(slide.shapes.title.text)

動作確認をする

動作確認のために以下のようなスライド example.pptx を作った.2ページ目を「非表示スライド」にしてある.

f:id:kakku22:20201211003122p:plain

サンプルコード title.py を実行すると,2ページ目を除外できた.

$ python title.py
slide title 1
slide title 3

まとめ

python-pptx「非表示スライド」を判定する Tips は知っておくと便利!引き続き python-pptx を使っていくぞー!