パワポ作成を自動化してみた PPTempライブラリの紹介

パワポ作成を自動化してみた PPTempライブラリの紹介

2023-2-20

この記事はQittaにて公開したものです。

単純作業は苦痛??

みなさんは、パワーポイントでスライドを作成するとき、大量の画像や表を貼り付けるときにどのようにしていますか? 例えば、月次報告資料のグラフや表、実験データの解析結果など、結果が画像として出力されてくるものは他の人に説明するときに、パワーポイントに貼り付けることが多いと思います。

1年ほど前まで私は手動でがんばって貼り付けていましたが、意外と手間がかかる上に、ちょっとしたデータの更新があった場合には同じ作業を繰り返す必要があり、私はこの上なく苦痛に感じていました。

特にデータが少ししか変わっていないのに、「なぜ報告資料のためだけに、こんなに時間をかけなければならないのか」と思うことが多々ありました。

なんとかこの苦行から脱出するべく、画像や表をスライドに簡単に貼り付けることができる方法がないか考え、PPTempというライブラリを作成しましたので、みなさんに紹介したいと思います。

簡単なご紹介

pptempライブラリは、パワーポイントスライドへの画像や表の貼り付け作業を自動化するためのツールです。pipを通じて簡単にインストールすることができます。インストール後、スライドごとに画像や表を管理することが容易になります。画像をスライドごとに別のディレクトリに保存するだけで、自動的にパワーポイントへ貼り付けられます。

このライブラリを使用することで、パワーポイントの作成作業が大幅に短縮され、効率化されます。pptempライブラリの機能と使い方について簡単に紹介します。

Githubのレポジトリ:PPTemp Github repo

簡単な使い方例

# フォルダ構成
fig
├── 01_1枚目のスライドタイトル
│   ├── 01_画像のラベル1-1.png
│   └── 02_画像のラベル1-2.png
├── 02_2枚目のスライドタイトル
│   ├── 01_画像のラベル2-1.png
│   └── 02_画像のラベル2-2.png
└── 03_3枚目のスライドタイトル
    ├── 01_画像のラベル3-1.png
    ├── 02_画像のラベル3-2.png
    ├── 03_画像のラベル3-3.png
    ├── 04_画像のラベル3-4.png
    ├── 05_画像のラベル3-5.png
    └── 06_画像のラベル3-6.png
from pptemp import pptemp

# class初期化
presentation = pptemp()

# スライドごとに図を貼り付ける
presentation.add_figure_label_slide()

# スライドを保存
presentation.save("test.pptx")

上記のようなフォルダ構成にして、四行のコードを実行するだけで、パワーポイントへ図が自動的に貼り付けられます。「スライドタイトル」と「画像のラベル」を自動的にパワーポイントへ貼り付けてくれます。「ラベルなし」や「ラベルあり」などはオプションで指定可能です。

出来上がり例: Slide1.png Slide2.png Slide3.png

使い方の詳細

このライブラリは基本的にはpython-pptxライブラリのwrapperとなっており、比較的少ないコードで、パワーポイントへの画像や表の貼り付け作業を自動化することを目的としています。

1. ライブラリのインストール

ライブラリはpipに登録してありますので、pipコマンドを使用してインストールすることができます。

pip install pptemp

最新版が欲しい方は、Githubのレポジトリからインストールすることもできます。

pip install git+https://github.com/Ameyanagi/pptemp

2. ライブラリのインポート

まずはライブラリをインポートします。

from pptemp import pptemp

3. classの初期化

次に、pptempクラスを初期化します。

presentation = pptemp()

初期化の際に既存スライドを指定すると、既存スライドのテンプレートを引き継ぎます。デザインを変えたい場合は、pptempクラスを初期化する際に、templateを指定してください。また、templateにスライドが既に存在する場合は、生成されるスライドは後ろに追加されていきます。

presentation = pptemp(template="template.pptx")

4. スライドの追加

基本的にはスライドを作成し、presentationに追加していくという使い方になります。 画像を貼りたいだけの方は4.3を参照してください。

4.1 タイトルスライドの追加

タイトルスライドとコンテンツスライドを用意しています。タイトルはタイトルとサブタイトルを指定することができ、以下のように指定できます。

slide = presentation.title_slide(title = "タイトル", subtitle = "サブタイトル")

オプション:

引数説明デフォルト値
titleタイトル"Title"
subtitleサブタイトル"Name"
alignタイトルの位置"center"
verticalタイトルの位置"middle"
font_nameフォント名"Meiryo"
font_size_titleタイトルのフォントサイズ44
font_size_subtitleサブタイトルのフォントサイズ18
font_boldフォントを太字にするかTrue
font_italicフォントを斜体にするかFalse
font_underlineフォントに下線を引くかFalse
font_colorフォントの色"black"

4.2 コンテンツスライドの追加

コンテンツスライドは、タイトルとコンテンツを指定することができ、以下のように指定できます。 コンテンツスライドはスライドタイトルだけの白紙のスライドを作成します。

slide = presentation.content_slide(title = "スライドタイトル")

オプション:

引数説明デフォルト値
titleスライドタイトル"Title"
use_barタイトルの下に線を引くかTrue
alignタイトルの位置"left"
verticalタイトルの位置"top"
font_nameフォント名"Meiryo"
font_sizeフォントサイズ30
font_boldフォントを太字にするかTrue
font_italicフォントを斜体にするかFalse
font_underlineフォントに下線を引くかFalse
font_colorフォントの色"black"

4.3 スライドと画像を自動的に追加

一番簡単な使い方は、スライドと画像を自動的に追加する方法です。以下のように指定することで、スライドと画像を自動的に追加することができます。 基本的にはデフォルトの状態で、サイズなどを自動調整してスライドを貼るようにしています。

presentation.add_figure_label_slide(dir_path = "./fig/*/", img_path = "*.png")

オプション:

引数説明デフォルト値
dir_path画像が入っているディレクトリのパス"./fig/*/"
img_path画像のパス"*.png"
left画像を貼り始めるの左端の位置(% vsスライド)0
top画像を貼り始めるの上端の位置(% vsスライド)12
width画像の幅(% vsスライド)100
height画像の高さ(% vsスライド)88
fileregex | 画像のファイル名からラベルを取得するための正規表現 | re.compile(r"._/\.[a-zA-Z]+")
dirregex | 画像のディレクトリ名からラベルを取得するための正規表現 | re.compile(r"._/\[/\]")
use_labelラベルを使用するかTrue
use_barタイトルの下に線を引くかTrue
label_positionラベルの位置"top"
title_font_sizeタイトルのフォントサイズ30
label_font_sizeラベルのフォントサイズ18

5. スライドの編集

5.1 テキストの追加

4で作成したスライドに対して、テキストを追加することができます。

slide = presentation.add_textbox(slide, text = "テキスト")

オプション:

引数説明デフォルト値
slideスライドオブジェクトNone
textテキスト""
leftテキストを貼り始めるの左端の位置(% vsスライド)0
topテキストを貼り始めるの上端の位置(% vsスライド)0
widthテキストの幅(% vsスライド)20
heightテキストの高さ(% vsスライド)5
alignテキストの位置"center"
verticalテキストの位置"middle"
font_nameフォント名"Meiryo"
font_sizeフォントサイズ18
font_boldフォントを太字にするかFalse
font_italicフォントを斜体にするかFalse
font_underlineフォントに下線を引くかFalse
font_colorフォントの色"black"

5.2 画像の追加

4で作成したスライドに対して、画像を追加することができます。

slide = presentation.add_picture(slide, path = "./fig/fig1.png")

オプション:

引数説明デフォルト値
slideスライドオブジェクトNone
path画像のパス""
left画像を貼り始めるの左端の位置(% vsスライド)0
top画像を貼り始めるの上端の位置(% vsスライド)0
width画像の幅(% vsスライド)50
height画像の高さ(% vsスライド)50

5.3 ラベル付き画像の追加

4で作成したスライドに対して、ラベル付き画像を追加することができます。

slide = presentation.add_picture_label(slide, path = "./fig/fig1.png", label = "ラベル")

オプション:

引数説明デフォルト値
slideスライドオブジェクトNone
path画像のパス""
left画像を貼り始めるの左端の位置(% vsスライド)0
top画像を貼り始めるの上端の位置(% vsスライド)0
width画像の幅(% vsスライド)50
height画像の高さ(% vsスライド)50
labelラベル""
label_positionラベルの位置"top"
label_heightラベルの高さ(% vsスライド)5
alignラベルの位置"center"
verticalラベルの位置"middle"
font_nameラベルのフォント名"Meiryo"
font_sizeラベルのフォントサイズ18
font_boldラベルのフォントを太字にするかFalse
font_italicラベルのフォントを斜体にするかFalse
font_underlineラベルのフォントに下線を引くかTrue
font_colorラベルのフォントの色"black"

5.4 テーブルの追加

4で作成したスライドに対して、pandasデータフレームからテーブルを追加することができます。

slide = presentation.add_table_from_df(slide, df = df, left = 0, top = 12, width = 100, height = 88)

オプション:

引数説明デフォルト値
slideスライドオブジェクトNone
dfデータフレームNone
leftテーブルを貼り始めるの左端の位置(% vsスライド)0
topテーブルを貼り始めるの上端の位置(% vsスライド)0
widthテーブルの幅(% vsスライド)100
heightテーブルの高さ(% vsスライド)100
colnamesテーブルの列名None
alignテーブルの位置"center"
verticalテーブルの位置"middle"
font_nameテーブルのフォント名"Meiryo"
font_sizeテーブルのフォントサイズ18
font_boldテーブルのフォントを太字にするかFalse
font_italicテーブルのフォントを斜体にするかFalse
font_underlineテーブルのフォントに下線を引くかFalse
font_colorテーブルのフォントの色"black"

6. スライドの保存

最後にスライドを保存するにはsaveメソッドを使用します。

presentation.save(path = "./output.pptx")

まとめ

今回はPythonでPowerPointを操作する方法を紹介しました。 PowerPointを操作することで、自動化したレポートの作成や、プレゼンテーションの作成が可能になります。 私はコードの最後に、このライブラリを読み込ませることでレポートの自動作成を行なっています。

ぜひみなさんも使ってみてください。