← 手順一覧へ戻る
クラウドフローOutlook業務の流れ初心者向け

共有メールボックスのPDF添付をSharePointに保存する

共有メールボックスのPDF添付だけをSharePointに保存します。まず6件の架空データで保存せずに判定を練習し、名前の空欄・大文字・インライン添付の違いを確認できます。

画面上の名前は、表示言語やバージョンによって異なる場合があります。クラウドフローはトリガー(フローを開始する条件)から始まり、その後にアクションを実行します。値の受け渡しには、前のステップの出力を選ぶ「動的コンテンツ」を使います。式は[式]欄へ入力します。

実行前に確認

  • Office 365 OutlookとSharePointは標準コネクタですが、利用できるMicrosoft 365/Power Automateの契約、接続、組織のDLPポリシーを確認してください。標準だから誰でも無料とは限りません。
  • GUIDという一意性の高い識別子をファイル名にして、同じreport.pdfが別メールから来ても名前の衝突を避ける例です。元のファイル名は保存名に残りません。正式運用では元の名前・メールIDとの対応を台帳などに記録する設計が必要です。
  • 同名衝突の回避と二重保存の防止は別です。この例は再実行や重複したトリガーで別のファイルを作ります。運用時はメールID+添付IDの処理済み管理を設計してください。再実行前に保存済みファイルを確認します。
  • 共有メールボックスのV2トリガーにはメールサイズや保護されたメールなどの制限があります。電子署名付きメールやメールそのものを添付した形式は通常のPDF添付と同じように扱えない場合があります。取りこぼしが許されない運用では実行履歴と受信箱の照合が必要です。
  • この例は添付内容を後から取得する方式です。「添付ファイルを含める=いいえ」のトリガー出力の内容を直接保存すると空になるため、取得(V2)を省略しないでください。受信済みメールの移動は新着受信のテストの代わりになりません。
  • 判定練習にはPower Automateでフローを作成・実行できる環境が必要です。練習用の6件は実際のメール出力を収集したものではありません。PDFという拡張子だけでは内容の形式・安全性は保証できません。

1使うトリガーとアクション

  1. トリガー共有メールボックスに新しいメールが届いたとき (V2)Office 365 Outlook:件名フィルター=添付保存テスト
  2. アクションそれぞれに適用するトリガーの添付ファイルを1個ずつ確認
  3. アクション条件インラインでなく、名前が.pdfで終わるか
  4. アクション添付ファイルの取得 (V2)はい側:メールID+添付ID+元のメールボックスのアドレス
  5. アクションファイルの作成同じはい側:SharePointへ取得した内容を保存。いいえ側は何もしない

図で見る処理のイメージ

概念図

練習メール1通にreport.pdf、memo.txt、本文の署名画像がある場合です。

  1. 受信

    共有メールボックス/件名:添付保存テスト 01

  2. 各添付を判定

    PDFかつインラインでないものだけ、はい側へ

  3. 内容を取得

    同じ共有アドレス+メールID+現在の添付ID

  4. 保存

    添付練習にGUID.pdfを1個作成。TXTと署名画像は保存しない

結果の例

PDF添付1個から保存ファイル1個を作ります。ファイル名は元のreport.pdfではなく生成した識別子.pdfになります。

保存せずに判定する練習データ

[
  {
    "name": "report.pdf",
    "isInline": false
  },
  {
    "name": "REPORT.PDF",
    "isInline": false
  },
  {
    "name": "memo.txt",
    "isInline": false
  },
  {
    "name": "logo.pdf",
    "isInline": true
  },
  {
    "name": null,
    "isInline": false
  },
  {
    "name": "report.pdf.txt",
    "isInline": false
  }
]
6件を判定したときの期待値(実行結果ではありません)
名前(name)インライン(isInline)条件の結果
report.pdffalseはい:PDF添付
REPORT.PDFfalseはい:大文字でも対象
memo.txtfalseいいえ:TXT
logo.pdftrueいいえ:インライン
null(名前なし)falseいいえ:空文字として判定
report.pdf.txtfalseいいえ:末尾は.txt

「実際の設定内容」の後半で、この配列を使う練習フローを説明します。はい側も「作成」で文字を出力するだけなので、ファイルは保存しません。

架空の練習データによる説明です。実際のフローを実行して確認した結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する13ステップの設定と確認方法
  1. 1

    準備:管理者が用意した共有メールボックスと、接続する自分の組織アカウントの読み取り権限(フルアクセス)を確認します。送信権限だけでは足りません。練習用SharePointサイトのドキュメントライブラリに「添付練習」フォルダーを作り、接続ユーザーがファイルを作成できることを確認します。

  2. 2

    入力例:件名「添付保存テスト 01」、添付「report.pdf」「memo.txt」のメールを使います。本文の署名画像が添付一覧に入っていても保存しません。実データではなく、機密情報を含まない小さなテストファイルを用意します。

  3. 3

    自動化したクラウドフローを作り、Office 365 Outlookの共有メールボックス用V2トリガーを選びます。元のメールボックスのアドレス=対象の共有アドレス、フォルダー=受信トレイ、件名フィルター=添付保存テスト、添付ファイル付きのみ=はい、添付ファイルを含める=いいえ。共有アドレスは架空の値のまま使わず、利用を許可された実在のものを設定します。

  4. 4

    「それぞれに適用する」の入力にトリガーの「添付ファイル」を選びます。この中に「条件」を置き、ANDで2行を組み合わせます。1行目は現在の添付の「インライン(Is Inline)」が式 false と等しい、2行目は式 toLower(string(item()?['name'])) が .pdf で終わる、です。falseは文字列でなく式欄の真偽値です。 stringは名前がnull(値なし)の場合に空文字へ変換し、toLowerへnullを渡さないために使います。空文字は.pdfで終わらないため、いいえ側になります。

  5. 5

    条件のはい側に「添付ファイルの取得 (V2)」を置きます。メッセージID=トリガーのメッセージID、添付ファイルID=ループ内の現在の添付ID、元のメールボックスのアドレス=トリガーと同じ共有アドレス。メールIDはメール1通、添付IDはその中のファイル1個を識別します。

  6. 6

    続けて同じはい側にSharePointの「ファイルの作成」を配置。サイトアドレスは練習用サイト、フォルダーのパスはピッカーで「添付練習」を選びます。ファイル名は式 concat(guid(),'.pdf')、ファイルコンテンツは「添付ファイルの取得 (V2)」の「コンテンツのバイト」を選びます。トリガーの空の内容や添付IDを入れないでください。

  7. 7

    いいえ側は空のままにします。report.pdfは保存、memo.txtとインライン画像はスキップします。名前を小文字にして判定するのでREPORT.PDFも対象です。拡張子の判定であり、本当に安全なPDFかを検査する処理ではありません。

  8. 8

    保存してから練習メールを新しく受信させ、実行履歴で各添付の条件結果と保存先を確認します。PDF2個なら2ファイル、PDFなしなら0ファイルが期待値です。添付なしのメールはトリガーの対象外です。

  9. 9

    つまずいたら:起動しない場合は読み取り権限・監視フォルダー・件名を確認。添付取得の404は共有アドレスと2種類のIDを確認。空ファイルや400は取得アクションのコンテンツのバイトを選んでいるか、保存の403はSharePoint接続権限を確認します。

  10. 10

    保存せずに判定だけ練習する:本番フローを編集せず、新しいインスタントクラウドフローを「手動でフローをトリガーする」で作ります。Outlook・SharePoint・送信アクションは追加しません。データ操作の「作成」を置き、名前をAttachmentSamplesに変更して、上の6件のJSON配列を入力欄に入れます。これは実際の添付内容ではなく、判定用メタデータだけの架空例です。

  11. 11

    練習フローの「それぞれに適用する」はAttachmentSamplesの出力を選びます。ループ内の「条件」はANDの2行にし、1行目は式 item()?['isInline'] が式 false と等しい、2行目は式 toLower(string(item()?['name'])) が .pdf で終わる、とします。JSONのfalseとnullは引用符で囲まない値です。文字列の「false」や「null」に変えないでください。

  12. 12

    はい側といいえ側にデータ操作の「作成」を1個ずつ置きます。はい側の入力は固定文字「保存対象(練習なので保存しない)」、いいえ側は「対象外」。保存して手動実行したら、各反復の入力name・isInline、条件結果、作成の出力を上の期待値表と照合します。はい2件、いいえ4件で、実ファイルの作成件数は0件です。

  13. 13

    練習でエラーになったら:ループの入力が文字列ではなく配列か、AttachmentSamplesの出力の先頭が [ になっているかを確認します。名前のない行で止まる場合はstringを省略していないか確認。式の大文字小文字を含めてname・isInlineを見直します。練習が通っても共有メールボックスの権限、添付内容の取得、保存先の書き込みが確認できたことにはなりません。実メールの確認は前の手順の練習用受信メールで別に行います。

Microsoft公式ページで確認する

設定を確認できる公式資料