Pythonで自動化

0

機密書類自動振り分けプログラム計画

パソコン上に保存した複数のファイルの中から、指定したキーワードを含むファイルを抽出したいという機会はありませんか?

例えば「社外秘」や「機密」などの語句を含む重要書類の抽出です。ほかにも、特定の製品やプロジェクトに関係した文章ファイルを集めたいなど、そんなシーンはあることでしょう

テキストベースのファイルなら、WindowsならpowershellのSelect-StingコマンドMacやLinux系ならgrepコマンドで一発で済みます。しかしExcelやWordなどビジネス現場でよく使われるアプリケーションのファイルにはそうした故満生が使えません。たとえ各アプリケーションの検索機能をりようしても、多数あるファイルを手作業で1つ1つ開いてキーワードを探していては膨大な手間と時間を要することでしょう。そのうえ見逃すリスクとも常に隣りあわせです。

そこでPythonを利用してExcelなど様々な種類のアプリケーションの複数ファイルに、指定したキーワードが含まれていないか横断的に調べ該当するファイルを抽出する作業をpythonで自動化します。記事は長くなりそうなので前編・後編で構成していこうかと思います。

開発環境の構築

最初に開発環境を準備しましょう。OSはWindows10、Excel、World、Powerpointが入ってあると望ましいです。pythonの開発環境はAnacondaで構築します。各種開発ツールに加え標準ライブラリはもちろん主要な外部ライブラリが最初から入っておりまとめてインストールできるのでお勧めです。

https://www.anaconda.com/products/individual

お使いのOSに合わせてインストーラーをダウンロードします。

Pythonのバージョンは最新を使います。PythonのコーディングはAnaconda同梱のJupyter Notebokで行います。WindowsのスタートメニューのAnaconda3→Jupyter notebookをクリックすると起動します。

既定のwebプラウザ上にHomepageふぁめんが表示され画面右上のNew→Python3でpython3の新規ノートブックを作成し必要に応じてリネームをして下さい。コードはセルに入力しツールバーのRunボタンをクリックするかShift+Enterを押すと実行できます。

続けて必要な外部ライブラリを追加します。本特集ではExcelとWordとPowerpointで操作するために以下のライブラリを使用します。

  • OpenPyXL
  • Python-docx
  • python-pptx
  • pywin32

ExcelとWord用に2種類のライブラリを利用します。がどのライブラリを操作に用いるかは順次解説します。なおpywin32はPowerPointの操作も可能ですが今回は利用しません。これら4つのライブラリの中でpython-docxとpython-pptxはAnacondaに最初から入っていないので追加インストールする必要があります。「スタート」メニューのAnaconda3→Anaconda PromptをクリックしてAnaconda Promptを開き下記コマンドでインストールしてください。

python-docx

conda install -c conda-forfe python-docx
conda install -c conda-forge python-pptx

上記コマンドを入力してEnterを押すと整合性などのチェックが行われた後Proceed[y]/nと表示されるのでyを入力してenterを押すとインストールされます。

インストール後は正しくインストールできたか確認するため以下のimport文をJupyterNotebookで実行してエラーが出ないか確認してください。

~前編サンプルの紹介~

今回の前編で作成するサンプルプログラムの機能および使い方は以下および図3の通りです。

■機能概要

「社外秘」などといった指定したキーワードを含むファイルやフォルダー(ディレクトリ)を自動で判定し、抽出して移動。判定はフォルダー名やファイル名、およびファイルの中身のテキストで実施

■対象

  • フォルダー
  • ファイル3種類 xlsx,docx,pptx

■使い方

1、プログラムを実行

2、書類フォルダーを選択

「書類フォルダーを選択して下さい」というダイアログボックスが表示される。処理対象のファイルやフォルダーが格納されたフォルダー以下「書類フォルダー」を選ぶ。キャンセルをクリックするとプログラム終了。

3、移動先フォルダーの選択

続けて移動先のフォルダーを選択して下さい。というダイアログが表示されるのでキーワードを含むファイルやフォルダーの移動先となるフォルダーを選ぶ。キャンセルでプログラム終了。

4、判定と移動が実行される

判定中のフォルダーは文言「Target dir:」に続けてフォルダー内を絶対パス付でJupyter notebookのセルに出力

■キーワード

複数のキーワードを指定可能。コード内にリスト形式で直接記述する。

■種類別の判定ポイント

▼共通

  • ファイル名
  • フォルダ名(中に含まれているファイルやフォルダーは名前などに関係なく丸ごと移動)

▼Excelファイル

セル/ワークシート名/図形

▼Wordファイル

本文/ヘッダー・フッター/図形/透かし

▼powerpoint

図形や本文/SmartArt/フッター/ノート/図形はタイトルや箇条書きなどのプレースホルダテキストボックスも含む。グラフ表は割愛

■備考

判定時は大文字小文字区別・パスワードロックで開けないファイルはスキップする。※エラー一覧出力

移動先に同名のフォルダー/ファイルが既にあるケースにはエラー中断