python-pptxとは?
python-pptxはPowerPointの自動化ができるPythonライブラリです。公式ドキュメントはこちら
どんな場面で役立つのか?
私の場合、Youtube動画用のスライド作成を自動化したいなと思い使ってみました。台本CSVを読み込んでスライド作成→Canvaにアップしてフォントを変更したりするフローで使用しています(一応CanvaにもCSVを読み込んでスライドを一括生成するアプリがあるのですが、有料プランじゃないと使えないようです)
なのでパワポでスライドを作成してアップロードする方法を考えました。これならCanva無料プランのままCSVを元にスライドを自動作成できます。
現状「スライド追加」と「テキストボックス追加」という初歩的な機能しか使ってません。がんばればもっと複雑なスライドを作れそうな気がします。仕事でも、資料作成をある程度自動化できると思われます(ただデザインの調整とかは人の手が必要)
python-pptxのインストール
pip install python-pptx
を実行するのみ
基本操作
サンプルコード
こちらは公式ドキュメントに載ってるサンプルコードです。これを実行するとパワポが出力されます。
from pptx import Presentation
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"
prs.save('test.pptx')
スライドの作成
Presentationオブジェクトをインスタンス化し、slides.add_slide()でスライドを作成する。
パワポの「新しいスライド」にあるデザインをprs.slide_layouts[]で指定できる。「白紙」は「6」

prs = Presentation()
# スライド作成
slide = prs.slides.add_slide(prs.slide_layouts[6])
テキストボックスを追加する
- ポイント単位を指定するためのPtクラスがあるのでインポートする
- add_textboxでテキストボックスを作成し、textで文字をセットできる
- 文字のサイズはfit_text()の引数max_sizeにint型で指定できる
from pptx.util import Pt
# テキストボックス作成 add_textbox(left: Length, top: Length, width: Length, height: Length)
text_box = slide.shapes.add_textbox(Pt(96), Pt(27), Pt(768), Pt(54))
text_box.text = "hello"
text_box.text_frame.fit_text(max_size=35)
現状これ以外の機能は使ってないので、なにかあれば随時追加していきます。