pptパワーポイントのタイトルメタデータを設定するPythonプログラム(Windows 上) このプログラムを実行するには以下のPythonパッケージが必要です: pip install python-pptx comtypes #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys import os from pptx import Presentation import comtypes.client import argparse import tempfile import shutil def convert_ppt_to_pptx(ppt_path): """古い.ppt形式のファイルを.pptx形式に変換する""" print(f"[処理] {ppt_path} をPPTX形式に変換しています.") # 一時ファイル名を作成 temp_dir = tempfile.mkdtemp() pptx_path = os.path.join(temp_dir, os.path.splitext(os.path.basename(ppt_path))[0] + '.pptx') # PowerPointを使用して変換 powerpoint = comtypes.client.CreateObject("PowerPoint.Application") powerpoint.Visible = False try: deck = powerpoint.Presentations.Open(os.path.abspath(ppt_path)) deck.SaveAs(os.path.abspath(pptx_path), 24) # 24 = ppSaveAsOpenXMLPresentation deck.Close() except Exception as e: print(f"[エラー] 変換中にエラーが発生しました: {e}") powerpoint.Quit() return None finally: powerpoint.Quit() print(f"[完了] 変換完了: {pptx_path}") return pptx_path def set_pptx_title(pptx_path, title): """PPTXファイルのタイトルメタデータを設定する""" try: # プレゼンテーションを開く presentation = Presentation(pptx_path) # 既存のタイトルを取得 old_title = presentation.core_properties.title print(f"[情報] 現在のタイトル: {old_title if old_title else '未設定'}") # タイトルを設定 presentation.core_properties.title = title # 変更を保存 presentation.save(pptx_path) print(f"[完了] タイトルを設定しました: {title}") return True except Exception as e: print(f"[エラー] タイトル設定中にエラーが発生しました: {e}") return False def main(): # コマンドライン引数を解析 parser = argparse.ArgumentParser(description='PowerPointファイルのタイトルメタデータを設定します.') parser.add_argument('file', help='PowerPointファイルのパス(.ppt または .pptx)') parser.add_argument('title', help='設定するタイトル') parser.add_argument('--backup', action='store_true', help='元のファイルのバックアップを作成します') args = parser.parse_args() file_path = args.file title = args.title # ファイルの存在確認 if not os.path.exists(file_path): print(f"[エラー] ファイルが見つかりません: {file_path}") return 1 # バックアップの作成 if args.backup: backup_path = file_path + '.bak' shutil.copy2(file_path, backup_path) print(f"[情報] バックアップを作成しました: {backup_path}") # ファイル形式の確認と処理 is_pptx = file_path.lower().endswith('.pptx') if is_pptx: # 直接PPTXファイルを処理 if set_pptx_title(file_path, title): return 0 else: return 1 else: # PPTをPPTXに変換して処理 temp_pptx = convert_ppt_to_pptx(file_path) if not temp_pptx: return 1 if set_pptx_title(temp_pptx, title): # 元のファイル拡張子を.pptxに変更 new_path = os.path.splitext(file_path)[0] + '.pptx' shutil.copy2(temp_pptx, new_path) print(f"[完了] 処理したファイルを保存しました: {new_path}") # 一時ディレクトリを削除 temp_dir = os.path.dirname(temp_pptx) shutil.rmtree(temp_dir) print(f"[注意] 元の.pptファイルはそのまま残されています.新しい.pptxファイルが作成されました.") return 0 else: # 一時ディレクトリを削除 temp_dir = os.path.dirname(temp_pptx) shutil.rmtree(temp_dir) return 1 if __name__ == "__main__": sys.exit(main())