新しいサービス【AwesomeQR】

【UiPath】PDFのページ数を自動取得

4 min 5,893 views
rpa_sample

はじめに

今回は、RPAツールの中でも、UiPathのある機能についてご紹介していきます。
いろいろな自動化がすでにググればたくさん出てきますが、なかなかググってもすぐに検索できなかったようなものがありましたので、個人的なメモのような形でご紹介していきます。
今回は、動画も用意しましたので、ぜひ最後までご覧ください。
なお、以前にRPAツールの紹介をしましたので、興味がある方は、以下の記事もご参照ください。

記事の対象者
  • UiPathをすでにインストールされている方
  • UiPathでどんなことができるか知りたい方
  • WordやPDFを扱う方
  • RPAに興味がある方
目次
  • はじめに
  • 目次
  • WordデータをPDFに変換
  • PDFのページ数を取得
  • おわりに
WordデータをPDFに変換

今回は、PDFデータのページ数を取得するのを目的としておりますが、事前の準備として、PDFがないといけないため、まずはPDFデータを作っていきます。

その前に、PDFは無料で使用できるAdobe Acrobat Readerでは、PDFデータのページ数を増やすことができないので、とりあえず、Wordを10ファイル作って、それを一気にPDFに変換していきたいと思います。

  1. STEP

    Wordデータの作成

    まず、1ページずつページ区切りで10ファイル作りました。もちろんこの作業もUiPathでできますが、こちらは割愛させていただきます。

  2. STEP

    WordをPDFに変換

    それでは、WordファイルをPDFに変換していきましょう。
    こちらは、一個一個ファイルを開いてPDFにすることもできますが、面倒なので、UiPathでやっていきます。

    今回は、ページ数取得することがメインなので、こちらについては、またどこかの機会で紹介するとして、動画を用意しましたのでご覧ください。

    同じフォルダに入ってしまって分かりづらいかと思いますが、時間の関係で省略させてください。
    ファイル名も・・・「.docx」が残ってしまってますね。
    今回は、とりあえず、このまま進めます。

    いずれにしても、準備は終わりましたので、ようやく、PDFのページ数を取得していきたいと思います。

PDFのページ数を取得

それでは、準備ができたので、続いてPDFのページ数を取得していきたいと思いますが、ページ数をどこかに出力しないと、あまり使い道がないので、今回はExcelに情報を記載していきます。

以下のようなタイトルのExcelを用意しておきます。

  1. STEP

    UiPathのフロー

    まず、以下のフローをご覧ください。

    これを見て読むのを諦めないでください。

    さて、上のフローで、先ほど準備したPDFデータのページ数を取得して、Excelファイルにファイル名とページ数を書き出すことができます。

    とてもシンプルで簡単ですね。

    そんなわけないですね。かなり厄介ですよね。

    ちょっとずつ分解して解説していきます。

  2. STEP

    ファイル名取得

    代入を使って、以下のように入力します。

    まず、「FileName」という変数を作って、そこに、フォルダ内のファイル名を入れていきます。
    以下の式でフォルダ内のファイル名を取得できます。(変数名は適当で大丈夫です。)

    System.IO.Directory.GetFiles(“フォルダ先“)

  3. STEP

    Excelを選択

    続いて、Excelを選択します。
    以下のようにExcelアプリケーションスコープを使って、残りのタスクはすべてこの中に入れていきます。

    フォルダ先とファイル名を入力(右の…をクリックして選択)して、その中にシーケンスを入れて、繰り返し処理もしたいので、その準備用に代入で「count」という変数を作って、「1」を入れていきます。

    カウントの変数の型は「GenericValue」とします。

  4. STEP

    繰り返し処理

    続いて以下のように繰り返し(コレクションの各要素)を追加して、「要素」を「item」(デフォルト値)、コレクションに、STEP2で作成した変数の「FileName」をセットします。

    繰り返しの中に、上図のようなおまじないのように、変数を使って、値をセットしていきます。

    左側右側
    processnew Process
    startInfonew ProcessStartInfo
    startInfo.Arguments“/A \””page={2}\”
    startInfo.FileNameitem
    streamReaderNew StreamReader(File.OpenRead(item))

    代入の後に、一致する文字列を取得を追加して、正規表現の設定をします。

    正規表現を設定をクリックすると、以下のようなウィンドウが現れますので完全式というところに以下の式を入れておきます。

    /Type\s*/Page[^s]

    変数作成の際のポイントをいかにまとめます。

    変数
    processProcess
    startInfoProcessStartInfo
    streamReaderStreamReader

  5. STEP

    Excelに書き込み

    さて、ようやく最後のステップで、Excelに書き込むタスクを追加していきます。

    STEP4でいろいろな変数を作りましたが、こちらを使って、取得したページとファイル名を代入で変数を使って書き込む準備をします。

    左側右側
    pagematches.Count.ToString
    FileName_pdfSystem.IO.Path.GetFileName(item)

    こちらの変数の方は「String」で大丈夫です。

    次に、セルに書き込みを追加して、ファイル名を入力させるタスクをいれます。

    ファイル名を事前に用意したエクセルのA2から入れたい(A1にタイトルの「ファイル名」があるため)ので、最初のセルの設定を以下のようにします。

    “A”+ (Count+1).ToString

    続いて、ページ数をB2から入れたいので、こちらは以下のようにします。

    “B”+ (Count+1).ToString

    Count+1が2行目から始めるポイントです。

    最後に、繰り返し処理のために、代入を上図のように入れます。

ようやく、これで完成です。

お疲れさまでした。さて、せっかくなので、こちらを動かした動画を用意しましたので、ご覧ください。

どうやらWordファイルを認識してしまっているようで、若干失敗しましたが、PDFのページ数は取得できました。

フォルダ内にページ数を取得したいものだけ入れておけばうまくいくでしょう。

おわりに

いかがだったでしょうか。

正直、わたしがまだ全然理解できておりませんのでうまく説明ができず、非常に雑な紹介になってしまった感がありますが、発展途上のためご了承ください。

ただ、わたしはUiPathはまだほとんど使えておりませんが、ちょっと勉強すればこんなこともできてしまいますので、RPAというのは今後の仕事効率化には欠かせないのではないかと思います。

もっといいやり方があるはずではありますが、今回はこのあたりで終わりにします。

関連記事