【5分でわかる】PythonでPowerPointの編集操作を自動化

【5分でわかる】PythonでPowerPointの編集操作を自動化

 

【悩み】
・PythonでPowerPointの編集操作はできる?
・パワーポイントをPythonで操作できるライブラリは?
・PowerPointの分割やあるスライドの削除などの編集操作を自動化したい。



こういった「悩み」に答えます。
 

【本記事の内容】
① Python向けPowerPointライブラリとは?
② PythonでPowerPointを編集するための準備
③ PythonでPowerPointを編集



本記事に掲載した手順を実践したことで、30分以内でPowerPointの編集関連の操作をPythonで自動化できました。
 

記事の前半では「Python向けPowerPointライブラリの一覧」と「ライブラリなどのインストール方法」を解説します。

記事の後半では「PowerPointの編集」をPythonで自動化する方法を紹介します。
 

この記事を読み終えることで、「指定したスライドの削除や結合などのパワーポイントの編集操作を自動化」状態になります。
 

ちなみに、Pythonを使うことで本記事で紹介すること以外にも様々なPowerPointの操作を自動化できます。以下に実現できる範囲をまとめましたので、良ければアクセスしてみてください。

>> Pythonで実現できるPowerPointの操作一覧


 

Python向けPowerPointライブラリとは?


以下の記事で「Python向けPowerPointライブラリ」の一覧と概要をご紹介しています。気になる方は、ぜひ読んでみてください。

>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化

 

以降で、PowerPointの編集操作自動化を実現するための環境準備を説明します。Pythonやライブラリのインストール手順を丁寧に解説します。


 

PythonでPowerPointを編集するための準備


「PythonでPowerPointを編集するための準備」に関してご紹介します。
 

【流れ】
手順1:Pythonのインストール
手順2:python-pptxライブラリのインストール
手順3:aspose.slidesライブラリのインストール
手順4:PowerPointのプレースホルダーを理解



上記の流れで説明します。
 

Pythonのインストール

以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。

>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】

>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】

>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照

>> 【環境構築】インストーラーでMacOSにPythonをインストール

 

python-pptxライブラリのインストール

python-pptxライブラリのインストール手順に関しては、以下の記事の「python-pptxライブラリのインストール」箇所をご覧ください。

>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化


 

aspose.slidesライブラリのインストール

以下のコマンドを順番に実行して、aspose.slidesライブラリをインストールしましょう。

pip install aspose.slides
pip list



コマンド実行後、「Aspose.Slides (バージョン)」が表示された場合、「正常にaspose.slidesライブラリをインストールできた」と判断できます。
 

python-pptxライブラリでは、パワーポイントにコメント追加できません。コメント追加したい場合、aspose.slidesライブラリを使います。


 

PowerPointのプレースホルダーを理解

PowerPointには、「プレースホルダー」という概念があります。詳細に関しては、以下の記事「PowerPointのプレースホルダーを理解」の箇所をご覧ください。

>> 【5分でわかる】PythonでPowerPointの新規作成操作を自動化


 

python-pptxとaspose.slidesでは自動化できる範囲が異なります。用途によってライブラリを使い分けましょう。


 

PythonでPowerPointを編集


「PythonでPowerPointを編集」に関してご紹介します。
 

【ご紹介事項】
・パワーポイントの読み込み
・テキスト編集
・テーブル編集
・指定したスライドの削除
・スライドのコピー
・別ファイルのパワーポイントと結合
・コメント付与



以降で、上記の各項目に関して以下のスライド「test.pptx」を用いて説明します。
 


 

パワーポイントの読み込み

「パワーポイントを読み込む」プログラムは、以下となります。適宜変更部分は自分用に書き換えてください。

import collections.abc
from pptx import Presentation

# 指定したパワーポイントの読み込み
prs = Presentation('./test.pptx') # 適宜変更

# パワーポイントの枚数を表示
slide_count = len(prs.slides)
print('スライドの枚数:' +  str(slide_count) )



上記のプログラムを「python-powerpoint-read.py」というファイル名で保存しましょう。
   

以下のコマンドを実行し、保存した「python-powerpoint-read.py」を実行します。

python python-powerpoint-read.py
スライドの枚数:3



コマンド実行後、「スライドの枚数」が表示された場合、正常にパワーポイントを読み込めたと判断できます。

 

テキスト編集

「スライドに記載されたテキストを編集する」プログラムは、以下となります。適宜変更部分は自分用に書き換えてください。

import collections.abc
from pptx import Presentation

# 指定したパワーポイントの読み込み
prs = Presentation('./test.pptx') # 適宜変更

# 全スライドで繰り返し
for slide in prs.slides:
  # スライドに記載されたテキスト情報を確認
  for shape in slide.shapes:
    if shape.has_text_frame:
      if shape.text == '1':
        shape.text = '100' # テキストを編集

# 別ファイルに保存
prs.save('edit-text.pptx')



上記のプログラムを「python-powerpoint-text-edit.py」というファイル名で保存しましょう。
   

以下のコマンドを実行し、保存した「python-powerpoint-text-edit.py」を実行してください。

python python-powerpoint-text-edit.py



コマンド実行後、以下のスライドが作成されます。
 

python-pptxでテキスト編集



python-pptxライブラリでテキスト編集関連の様々な例が、以下の公式サイトに記載されています。

>> テキスト編集関連のプログラム事例(python-pptx公式サイト)


 

テーブル編集

「スライドに記載されたテーブル(表)を編集する」プログラムは、以下となります。適宜変更部分は自分用に書き換えてください。

本事例では、以下のPowerPointファイルを利用します。必要であればダウンロードしてください。
 

 

import collections.abc
from pptx import Presentation

# 指定したパワーポイントの読み込み
prs = Presentation('./test-table.pptx') # 適宜変更

# 全スライドで繰り返し
for slide in prs.slides:
  # スライドに記載されたテーブル情報を確認
  for shape in slide.shapes:
    if shape.has_table:
      # テーブルのカラムごとに繰り返す
      for cell in shape.table.iter_cells():
        if cell.text == '1':
          cell.text = '100' # テーブルの値を編集
          
# 別ファイルに保存
prs.save('edit-table.pptx')



上記のプログラムを「python-powerpoint-table-edit.py」というファイル名で保存しましょう。
   

以下のコマンドを実行し、保存した「python-powerpoint-table-edit.py」を実行してください。

python python-powerpoint-table-edit.py



コマンド実行後、以下のスライドが作成されます。
 

python-pptxでテーブル編集



python-pptxライブラリでテーブル編集関連の様々な例が、以下の公式サイトに記載されています。

>> テーブル(表)編集のプログラム事例(python-pptx公式サイト)


 

指定したスライドの削除

現時点のpython-pptxでは、指定したスライドを削除する関数は用意されていません。そのため、独自に以下のように実装しましょう。

import collections.abc
from pptx import Presentation

# 指定したスライドを削除する関数
def delete_slide(prs, slide):
    id_dict = { slide.id: [i, slide.rId] for i,slide in enumerate(prs.slides._sldIdLst) }
    slide_id = slide.slide_id
    prs.part.drop_rel(id_dict[slide_id][1])
    del prs.slides._sldIdLst[id_dict[slide_id][0]]

# 指定したパワーポイントの読み込み
prs = Presentation('./test.pptx')
print('削除前のスライド枚数:' + str(len(prs.slides)) )

# 指定したページ番号のスライドを削除。以下の場合、2ページ目が削除される。
delete_slide(prs, prs.slides[1])
print('削除後のスライド枚数:' + str(len(prs.slides)) )

# 別ファイルに保存
prs.save('deleted-test.pptx')



上記のプログラムを「python-powerpoint-delete.py」というファイル名で保存しましょう。
   

以下のコマンドを実行し、保存した「python-powerpoint-delete.py」を実行してください。

python python-powerpoint-delete.py
削除前のスライド枚数:3
削除後のスライド枚数:2



コマンド実行後、「スライドの枚数が減っていた」場合、正常に指定したスライドを削除できた判断できます。
 

ちなみに、上記のプログラムは、以下のstack overflowに掲載されていました。

>> python-pptxで指定した番号のスライドを削除するプログラム例


 

スライドのコピー

python-pptxライブラリでは、「パワーポイントの特定のスライドをコピーし、任意の位置に挿入」といった関数は提供されていません(独自実装が必要)。
しかし、aspose.slidesライブラリを使うと、以下のプログラムで簡単に実現できます。

import aspose.slides as slides

# 指定したパワーポイントの読み込み
with slides.Presentation("./test.pptx") as pres:
    # スライドオブジェクトを作成
    slds = pres.slides

    # 任意の場所に指定したスライドをコピー
    slds.insert_clone(2, pres.slides[1])

    # 別ファイルとして保存
    pres.save("./add-copy-slide.pptx", slides.export.SaveFormat.PPTX)



上記のプログラムを「python-powerpoint-copy.py」というファイル名で保存しましょう。
   

以下のコマンドを実行し、保存した「python-powerpoint-copy.py」を実行してください。

python python-powerpoint-copy.py



コマンド実行後、以下のスライドが作成されます。aspose.slidesライブラリの評価版で上記プログラムを実行した場合、背景に透かし文字が自動挿入されます。
 

任意の場所にスライドをコピー



aspose.slidesライブラリでパワーポイントのスライドをコピーする様々な例が、以下の公式サイトに記載されています。

>> Clone Slides(aspose.slidesの公式サイト)


 

別ファイルのパワーポイントと結合

python-pptxライブラリでは、簡単に別ファイルのパワーポイントを1つに結合(マージ)できません(独自実装が必要)。
しかし、aspose.slidesライブラリを使うと、以下のプログラムで簡単に実現できます。

import aspose.slides as slides

# 1つ目のパワーポイントを開く
with slides.Presentation("./test.pptx") as pres1:
  
    # 2つ目のパワーポイントを開く
    with slides.Presentation("./test2.pptx") as pres2:
        
        # 2つ目のパワーポイント内にあるスライドを結合
        for slide in pres2.slides:
            pres1.slides.add_clone(slide)
        
        # 結合したファイルを別ファイルとして保存
        pres1.save("combined.pptx", slides.export.SaveFormat.PPTX)



上記のプログラムを「python-powerpoint-merge.py」というファイル名で保存しましょう。
   

以下のコマンドを実行し、保存した「python-powerpoint-merge.py」を実行してください。

python python-powerpoint-merge.py



コマンド実行後、以下のスライドが作成されます。
 

結合されたパワーポイント



aspose.slidesライブラリでパワーポイントを結合する様々な例が、以下の公式サイトに記載されています。

>> PythonでPowerPointプレゼンテーションをマージ(aspose.slidesの公式サイト)


 

コメント付与

python-pptxライブラリでは、PowerPointのスライドに対してコメント付与できません。そのため、コメント付与を実現したい場合、aspose.slidesライブラリを使い、以下のプログラムを作成しましょう。

import aspose.slides as slides
import aspose.pydrawing as drawing
import datetime

# 指定したスライドの読み込み
with slides.Presentation('./test.pptx') as presentation:
    # コメント付与した人の名前
    author = presentation.comment_authors.add_author("Usman", "hero")

    # コメントを追加する場所を指定
    point = drawing.PointF(0.2, 0.2)

    # 指定したスライドにコメントを付与
    author.comments.add_comment("テストです。", presentation.slides[0], point, datetime.date.today())

    # 別ファイルに保存
    presentation.save("ppt-comments.pptx", slides.export.SaveFormat.PPTX)



上記のプログラムを「python-powerpoint-comment.py」というファイル名で保存しましょう。
   

以下のコマンドを実行し、保存した「python-powerpoint-comment.py」を実行してください。

python python-powerpoint-comment.py



コマンド実行後、以下のスライドが作成されます。
 

スライドにコメント付与



aspose.slidesライブラリでパワーポイントのコメントに関する様々な例が、以下の公式サイトに記載されています。

>> PowerPointのコメントに関する事例集(aspose.slidesの公式サイト)


 

python-pptxライブラリでできない編集は多々あります。その際は、独自実装またはaspose.slidesライブラリの利用を検討してください。



Pythonを使うことで、PowerPointの新規作成操作を自動化できることを説明しました。このPythonを使うことで、あらゆる業務や作業を自動化できます。
その事例やヒントを知りたい方には、以下の本がオススメです。

 



ちなみに、上記教材の詳細なレビューに関しては、以下のサイトにまとめています。

>> 退屈なことはPythonにやらせようのレビュー


 

【まとめ】PythonでPowerPointの編集操作を自動化


いかがでしたでしょうか?

上記で紹介したpython-pptxライブラリやaspose.slidesライブラリを使うことで、PythonでPowerPointの編集操作を自動化できます。

最後にもう一度内容を確認しましょう。
 

【おさらい】
・python-pptxでPowerPointの編集の操作をPythonで自動化できる
・python-pptxライブラリとaspose.slidesライブラリを適切に使うこと
・aspose.slidesライブラリは機能が豊富だが、有償ライブラリである



本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。

>> IT技術やその学び方を発信しているサイト「駆け出し物語」(本ブログ)
 

コメント

タイトルとURLをコピーしました