【Power Automate】PDF自動変換

Power Automate
この記事は約6分で読めます。

本記事では、「PDF変換用」フォルダにファイルをアップロードすると、PDFに自動変換するフローを紹介します。

この記事でわかること
  • PDFへの自動変換方法
  • wordやExcel等のファイルを限定した自動変換方法
  • Excelの1シートのみのPDF変換方法



作成するフローの内容

本記事では、下記のフローを作成します。


  

フロー全体のショット

今回作成するフローはこのような形です。


 

事前準備

下記フォルダの準備が必要です。

  • PDF変換用フォルダ
  • PDF変換済フォルダ

PDF変換用フォルダと変換済フォルダを別途用意するのは、「ファイルが作成されたとき」のトリガーによる無限ループを避けるための簡単な対策となるからです。


 

自動化したクラウドフローの作成

フローの作成に入ります。
作成画面で「自動化したクラウドフロー」を選択します。



下記画面でフロー名とトリガーを設定します。
トリガーは「ファイルが作成されたとき(プロパティのみ)」です。

「OneDrive」と「OneDrive for Business」があるので、適切な方を選んでください。
本記事では、「OneDrive for Business」を選択します。


  

「ファイルが作成されたとき」/「ファイルが作成されたとき(プロパティのみ)」のトリガーでは、OneDrive内で移動したファイルに対しては実行されません。
※例えば、OneDrive内の「作業用フォルダ」から「PDF変換用フォルダ」にファイルを移動しても、フローが実行されません。


対象のファイルをコピーペーストして複製する、ローカルフォルダ等のOneDrive外の格納先からアップロードする等、「新しいファイル」として認識されるようにしてください。


 

「ファイルが作成されたとき(プロパティのみ)」の設定

対象のフォルダーを選択します。



アップロードされたファイルを1つずつ処理するために、「設定」より「分割」がONになっていることを確認ください。


 

「ファイルの変換」アクション追加

PDF変換するためのアクション、「ファイルの変換」アクションを追加します。


「OneDrive for Business」の「ファイルの変換」アクションを選択します。



パラメータを設定します。

ファイル動的なコンテンツより「ID」を選択してください。
ターゲットの種類PDF


 

「ファイルの作成」アクションの追加

「ファイルの変換」後、必ず「ファイルの作成」アクションを追加し、実際に変換後のファイルを作成する必要があります


「OneDrive for Business」より「ファイルの作成」アクションを追加します。


 
パラメータを設定します。

フォルダーのパスフォルダアイコンよりPDFファイルを格納するフォルダを選択します。
ファイル名動的なコンテンツより、「ファイルの変換」項目下の「ファイル名」を選択します。
ファイルコンテンツ動的なコンテンツより、「ファイルの変換」項目下の「ファイルコンテンツ」を選択します。


 

「ファイルの削除」アクションの追加(任意)

本フローでは、PDF変換前のファイルを削除します。


「OneDrive for Business」の「ファイルの削除」アクションを追加します。



パラメータを設定します。

ファイル「ファイルが作成されたとき(プロパティのみ)」の直下にある「ID」を選択してください。
※「ファイルの作成」直下の「ID」を選択すると、PDF変換後のファイルが削除されてしまいます。


  

フローの保存とテスト

保存をし、テストを実行してみてください。
「PDF変換済」フォルダにPDFが格納されたら成功です。


 

特定の拡張子のみPDF変換したい場合

WordやExcel等の特定ファイルのみでPDF変換したい場合、「条件」アクションを追加し、下記3アクションを条件内に移動します。



例えば、ExcelファイルのみをPDF変換したい場合の「条件」アクションのパラメータは下記の通りです。
ファイル名に対象の拡張子が含まれているか、で条件判定します。

左辺動的なコンテンツより、「ファイルが作成されたとき(プロパティのみ)」直下の「名前」を選択します。
演算子contains
右辺Excelファイルの拡張子の「xlsx」を入力します。
・Wordの場合は「docx」
・Power Pointの場合は「pptx」


 

Excelの特定のシートのみPDF変換したい場合

「複数あるシートの内、1シートだけをPDF変換したい」という場合は、フロー内で「Office Script」を実行します。
Office ScriptによりExcelのPDF変換対象外のシートを全て削除してから、PDF変換を行うという流れです。


Office ScriptでExcelファイルを作業すると、ファイルに6分間のロックがかかるため、最後の「ファイルの削除」ステップでエラーになってしまいます。
そのため、「遅延」アクションで7分待ってから、ファイルの削除を行うようにします。


 

Office Scriptの用意

PDFに変換したいExcelを開き、変換対象外のシートを全て削除するスクリプトを作成しましょう。
「自動化」タブより「新しいスクリプト」をクリックします。



スクリプトを入力します。

1わかりやすいスクリプト名をつけます。
2対象のシート以外は全て削除するスクリプトを入力します。
※”Sheet1″の箇所は、PDF変換する(削除しない)シート名に置き換えてください。

function main(workbook: ExcelScript.Workbook) {
    const sheets = workbook.getWorksheets();

    for (let sheet of sheets) {
        if(sheet.getName() !== "Sheet1") {
            sheet.delete();
        }
    }
}



保存をすると、既定ではOneDrive>ドキュメント>Office Scriptsの中にスクリプトが格納されます。


 

「スクリプトの実行」アクションの追加

スクリプトを作成後、Power Automateのフロー編集画面に戻り、「スクリプトの実行」アクションを追加します。
※「ファイルの変換」アクション前に追加します。

場所OneDrive for Business
ドキュメントライブラリOneDrive
ファイル動的なコンテンツより「ID」を選択します。
スクリプト作成したスクリプトを選択します。


「遅延」アクションの追加

最後の「ファイル削除」アクションでのファイルロックエラーになることを防ぐため、「遅延」アクションを追加します。

Count7
ファイルロック期間は6分間のため、7分で設定します。
UnitMinute

コメント

  1. イチリ より:

    HTMLをPDFに変換する方法はありますか?
    日本語ありでお願いします。

    • もちぱん もちぱん より:

      イチリ様
      コメントありがとうございます。
      返信が遅くなり申し訳ありません。

      日本語を含むダブルバイトの文字の場合は、「言語がサポートされていない」という理由でPDF変換ができないようになっております。
      よろしければ、こちらが参照リンクです。

      Power Automateの無料機能では厳しいため、プレミアムコネクタの「Adobe」等のサービスを利用していただく必要があります。
      詳細はQiitaでrsuzuki様が解説しておられるので、よろしければこちらをご参照ください。