Power Automateでメールの添付ファイルを自動処理するフローは、業務効率化に欠かせません。しかし、すべての添付ファイルを同じように扱うと、意図しない形式のファイルが処理されてトラブルの原因になります。特にPDFファイルだけを抽出して別のシステムに保存したり、内容を解析したいケースは多く、その場合は条件設定が重要です。本記事では、Power Automateで添付ファイルをPDFのみに絞り込む条件設定の方法を、具体例や失敗パターンとともに詳しく解説します。
【要点】この記事で確認すること
- 最初に見る場所: 条件アクションの「式」エディタでファイル名の拡張子をチェックする方法。また、トリガーで「添付ファイルを含む」オプションを有効にする必要があります。
- 切り分けの軸: 条件の設定ミス(拡張子の大文字小文字、スペース、複数添付のループ処理)と、トリガー自体が添付ファイルを正しく取得できているかの確認。さらに、フローの実行履歴でエラーがないか確認します。
- 注意点: 会社PCでPower Automateを利用する場合、管理者がポリシーで条件式の一部を制限している可能性があります。また、条件に使う「式」は環境によっては大文字小文字を区別するため、必ず「.pdf」と小文字で統一することを推奨します。
ADVERTISEMENT
目次
なぜ添付ファイルをPDFだけに絞り込む必要があるのか
Power Automateでメールをトリガーにしたフローを作る際、添付ファイルを取得してその後のアクションで処理する場面はよくあります。例えば、注文書のPDFを自動的にクラウドストレージに保存したり、契約書のPDFからテキストを抽出してデータベースに登録するといったユースケースです。しかし、メールにはさまざまな形式のファイルが添付されます。Word文書やExcelシート、画像ファイルなど、PDF以外のファイルが混ざっている場合、それらも一緒に処理されてしまうと、後続のアクションでエラーが発生したり、想定と異なるデータが保存されるリスクがあります。そのため、条件を使って「PDFファイルだけを処理する」というフィルタリングは、フローを堅牢にするために欠かせません。
また、複数の添付ファイルがあるメールでは、それぞれのファイルに対してループ処理を行い、PDFのみを選択的に処理する必要があります。このような条件設定を誤ると、フローが想定通りに動作せず、後から手動で修正する手間が生じます。本記事では、こうした失敗を未然に防ぐための具体的な条件式の書き方と、運用上の注意点をまとめます。
条件設定の基本的な考え方
Power Automateで添付ファイルの種類を判別する方法は、主にファイル名の拡張子をチェックする方法と、MIMEタイプをチェックする方法の2つがあります。一般的には拡張子を確認する方法が簡単で、多くの場合で十分です。ただし、拡張子が偽装されているケースや、拡張子のないファイルには対応できないため、必要に応じてMIMEタイプも併用します。
拡張子による条件設定
最もシンプルな方法は、条件アクション内で「fileType」や「name」の末尾が「.pdf」であるかをチェックする式を書くことです。Power Automateでは、添付ファイルオブジェクトの「Name」プロパティにファイル名が格納されています。この文字列に対して「endsWith」関数を使用します。具体的な式は次のようになります。
endsWith(triggerOutputs()?['body/attachments']?['name'], '.pdf')
ただし、複数の添付ファイルがある場合は、この式を直接使うと配列全体に対して判定されるため注意が必要です。正しくは、Apply to eachループ内で個々の添付ファイルに対して条件を適用します。
MIMEタイプによる条件設定
より厳密にPDFファイルを識別するには、添付ファイルの「contentType」プロパティを確認します。PDFのMIMEタイプは「application/pdf」です。次のような式を使います。
equals(items('Apply_to_each')?['contentType'], 'application/pdf')
MIMEタイプを使う利点は、拡張子が正しくなくてもファイルの中身から判定されるため、偽装や誤った拡張子にも対応できる点です。ただし、トリガーによってはcontentTypeが正しく取得できない場合があるため、実際の動作を確認しながら使い分けてください。
具体的な設定手順(6ステップ)
ここでは、Outlookメールに添付されたファイルのうち、PDFだけをOneDriveに保存するフローを例に手順を説明します。トリガーは「新しいメールが届いたとき」、アクションは「ファイルを作成」です。
- Power Automateで「新しいメールが届いたとき」トリガーを選択し、「フォルダー」と「添付ファイルを含む」を「はい」に設定します。これでメールの添付ファイルを取得できるようになります。
- トリガーの後に「Apply to each」アクションを追加し、「前の手順からの出力を選択」で「添付ファイル」を指定します。これにより、複数の添付ファイルを1つずつ処理できるようになります。
- 「Apply to each」の中に「条件」アクションを追加します。条件の左側のボックスに「items(‘Apply_to_each’)?[‘name’]」と入力し、演算子は「次の値で終わる」を選択し、右側に「.pdf」と入力します。これはファイル名が「.pdf」で終わるかどうかをチェックします。
- 条件の「はいの場合」に「ファイルを作成」アクションを追加し、保存先のフォルダーとファイル名を設定します。ファイル名には「items(‘Apply_to_each’)?[‘name’]」を指定し、ファイルの内容には「items(‘Apply_to_each’)?[‘contentBytes’]」を指定します。
- 条件の「いいえの場合」には何もアクションを追加しないか、必要に応じてログを残すアクションを追加します。これでPDF以外のファイルは無視されます。
- フローを保存し、テスト用のメールを送信して動作を確認します。メールにPDFとWordファイルを添付し、PDFだけが保存されることを確認してください。
失敗しがちなパターンと対策
条件設定でよくあるミスを下表にまとめました。これらのポイントを押さえておくと、トラブルを未然に防げます。
| 失敗パターン | 原因 | 対策 |
|---|---|---|
| 拡張子の大文字小文字を区別しない設定 | 「.PDF」や「.Pdf」など大文字を含むファイルがあると条件が偽になる | 式で「toLower(items(…)?[‘name’])」を使い小文字に変換してから「endsWith」を適用する |
| 複数添付でループしていない | Apply to eachを使わずに条件を直接トリガー出力に対して書いている | 必ずApply to eachでループし、その中で条件を使う |
| コンテンツタイプが取れない | 一部のトリガー(例:共有メールボックス)ではcontentTypeが空になる | 拡張子チェックを併用するか、トリガーを「メールが届いたとき(V2)」に変更する |
| ファイル名にスペースが含まれる | 条件式で完全一致を求めるとスペースで失敗する | 「contains」や「endsWith」を使うことで回避可能 |
また、条件式を書く際に「式」タブで正しく入力できているかも確認してください。文字列の引用符やカンマの位置がずれると、フローがエラーになります。特に、Power Automateの式エディタは大文字小文字を区別するため、「EndsWith」と書くとエラーになります。正しくは「endsWith」です。
管理者に確認すべき項目
会社の環境でPower Automateを利用する場合、管理者の設定によって条件式が制限されたり、特定のコネクタが利用できないことがあります。以下の点を事前に確認しておくとスムーズです。
- ライセンス: 条件式やApply to eachの使用自体は標準のPower Automateライセンスで可能ですが、プレミアムコネクタ(例:SharePoint、SQL Server)を使う場合は別途ライセンスが必要です。
- データ損失防止(DLP)ポリシー: 管理者が特定のコネクタをブロックしている場合、OutlookとOneDriveの連携が制限される可能性があります。事前に利用可能なコネクタを確認してください。
- カスタムコネクタ: 社内システムと連携する場合、カスタムコネクタの使用許可が必要になることがあります。
- 条件式の制限: 一部の組織では、式エディタで使用できる関数が制限されている場合があります。特に「workflow()」や「trigger()」などのランタイム関数は許可が必要な場合もあるので、不明な点はIT管理者に問い合わせてください。
よくある質問(FAQ)
Q1. 条件に「はいの場合」と「いいえの場合」の両方を設定する必要がありますか?
必須ではありません。PDFのみを処理したい場合は、「はいの場合」だけに処理を記述し、「いいえの場合」は何も設定しないか、ログだけを残すようにします。ただし、デバッグ時などは「いいえの場合」に通知を送るなどすると原因究明に役立ちます。
Q2. 添付ファイルがPDFでも、中身が画像のPDF(スキャン文書)でも条件は同じですか?
拡張子やMIMEタイプの条件はファイルの種類を判定するだけなので、中身が画像でもテキストでもPDFであれば条件を通過します。もし中身のテキスト抽出が必要な場合は、さらに「PDFからテキストを抽出」アクションなどを追加してください。
Q3. ファイル名に「.pdf」が含まれているが拡張子ではない場合(例:manual.pdf.txt)はどうなりますか?
「endsWith」関数は末尾が「.pdf」かどうかを見るため、このファイルは条件を通過しません。逆に、拡張子が「.pdf」でもファイル名の途中に「.pdf」がある場合(例:draft.pdf.old)も同様です。このようなケースでは、より厳密な正規表現を使うか、MIMEタイプを確認する方法が適しています。
まとめ
Power Automateで添付ファイルをPDFだけに絞り込む条件設定は、フローの安定稼働に直結する重要なスキルです。本記事で紹介した拡張子チェックとMIMEタイプチェックの2つの方法を状況に応じて使い分けることで、ほとんどのケースに対応できます。特に、Apply to eachを使ったループ処理と大文字小文字の対応は忘れがちなポイントなので、注意してください。設定後は必ずテスト用のメールで動作確認を行い、意図した通りにPDFだけが処理されているか確認しましょう。
また、会社のポリシーやライセンスの制約がある場合は、管理者と連携して適切な権限を確保してください。Power Automateは強力な自動化ツールですが、条件設定を誤ると逆に業務の手間が増えることもあります。本記事を参考に、堅牢で効率的なフローを構築していただければ幸いです。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
