SharePoint・OneDriveのファイル自動化:添付の保存・PDF変換・フォルダの整理

公開 書いた人 大林 諒

SharePoint と OneDrive のファイル操作は、Power Automate(パワーオートメイト)でいちばん効果が見えやすい自動化です。フォルダを作る、メールの添付を決まった場所に保存する、見積書を PDF にする、といった毎日の手作業がなくなります。この記事では、社員15名ほどの「サンプル工務店」の工事案件サイトを例に、ファイルを扱うアクションの一覧、案件フォルダの自動作成、PDF 変換、ファイル名の付け方、共有リンクまでを書きます。Microsoft 365 Business Standard に含まれる標準コネクタだけで作れる範囲を中心にし、Premium が要るところはその都度書きます。

この記事の内容
  1. 先に決めること
  2. ファイルを扱うアクションの一覧
  3. 案件が登録されたら案件フォルダ一式を作る
  4. メールの添付を決まったフォルダに保存する
  5. WordやExcelをPDFにする
  6. ファイル名に日付と案件番号を入れる
  7. 共有リンクを作る
  8. できないことと、その代わり
  9. よく詰まるところ
  10. 次にやること

先に決めること

SharePointとOneDriveのどちらに置くか

会社のファイルは SharePoint のドキュメント ライブラリに置きます。OneDrive は個人の作業場所で、持ち主が退職するとファイルの扱いに困ります。Power Automate の OneDrive for Business コネクタは、接続したアカウント自身の OneDrive しか扱えません(公式の既知の制限)。ほかの人の OneDrive や SharePoint のファイルを OneDrive コネクタで直接触ることはできないので、置き場所は最初から SharePoint にそろえます。

OneDrive を使うのは、後で書く PDF 変換の作業場所としてだけです。

フォルダの形を決める

サンプル工務店の工事案件サイトには、「図面」「見積」「写真」の3つのドキュメント ライブラリがあります。案件ごとに、3つのライブラリそれぞれに同じ名前のフォルダを作ります。

ライブラリ案件フォルダの下
図面K-2026-031_山田様邸 の下に 01_計画 02_確認申請 03_施工図
見積K-2026-031_山田様邸 の下に 見積書 発注書
写真K-2026-031_山田様邸 の下に 着工前 施工中 完成

フォルダ名は「案件番号_施主名」にします。案件番号を頭に付けると、並べたときに番号順になり、名前が同じ施主がいても重なりません。

ファイル名の決まり

ファイル名は「案件番号_書類の種類_日付」の形にそろえます。例は K-2026-031_見積_20261031.pdf です。日付は yyyyMMdd の8けたにすると、名前の順がそのまま日付の順になります。

OneDrive・SharePoint のファイル名とフォルダ名には、" * : < > ? / \ | の文字は使えません。先頭と末尾の空白、~$ で始まる名前、CON PRN AUX NUL .lock _vti_ desktop.ini といった名前も使えません。施主名や件名をそのままファイル名に使うときは、ここで止まりやすいので後の式で置き換えます。

ファイルを扱うアクションの一覧

主なアクションです。名前は公式ドキュメントの表記で、画面の表示とは少し違うことがあります。

やりたいことSharePointOneDrive for Business
ファイルを作る「ファイルを作成する」「ファイルを作成する」
中身を読む「ファイル コンテンツの取得」「ファイル コンテンツの取得」
コピーする「ファイルのコピー」「ファイルのコピー」
移動する「ファイルの移動」「ファイルの移動または名前変更」
名前を変える新しい名前の欄はない。「ファイルを作成する」で別名のファイルを作り、元を削除する「ファイルの移動または名前変更」
フォルダを作る「新しいフォルダーを作成する」フォルダを作るアクションはなし
フォルダごとコピー・移動「フォルダーのコピー」「フォルダーの移動」なし
ライブラリの列を書く「ファイルのプロパティを更新する」なし
PDF などに変換するなし「ファイルの変換」「パスを使用してファイルを変換する」
共有リンクを作る「ファイルまたはフォルダーの共有リンクを作成する」「共有リンクを作成する」
特定の人に共有する「アイテムまたはフォルダーへのアクセスを許可する」なし

トリガーは、SharePoint の「ファイルの作成時 (プロパティのみ)」「ファイルが作成または変更されたとき (プロパティのみ)」、OneDrive の「ファイルの作成時」「ファイルが変更されたとき」がよく使われます。OneDrive のトリガーは、50 MB を超えるファイルを飛ばします(公式の既知の制限)。

SharePoint・OneDrive のコネクタは、どちらも標準コネクタです。Microsoft 365 に含まれる Power Automate の範囲で使えます。

案件が登録されたら案件フォルダ一式を作る

工事案件リストに案件が登録されたら、3つのライブラリに案件フォルダとその下のフォルダを作り、リストの「案件フォルダ」列にリンクを書き戻します。工事案件リストの作り方と列の設計は、SharePointリストとは:作り方と、Excelの台帳をリストに移す判断、で書いています。

フローの全体

順アクション中身
1「アイテムが作成されたとき」工事案件サイトの工事案件リスト
2「作成」(データ操作)フォルダ名 案件番号_施主名様邸 を作る
3「新しいフォルダーを作成する」×3図面・見積・写真に案件フォルダと下のフォルダ
4「項目を更新する」案件フォルダ列に図面フォルダのURLを入れる
5「チャットまたはチャネルでメッセージを投稿する」工事チームにフォルダができたことを知らせる

手順

  1. 「マイ フロー」→「新しいフロー」→「自動化したクラウド フロー」を選び、トリガーに SharePoint の「アイテムが作成されたとき」を選ぶ
  2. 「サイト アドレス」に工事案件サイト、「リスト名」に工事案件を選ぶ
  3. 「データ操作」の「作成」を足し、名前を「フォルダ名」にして、入力に次の式を入れる
concat(triggerBody()?['ProjectNo'], '_', replace(replace(replace(triggerBody()?['Client'], '/', '_'), '\', '_'), ':', '_'), '様邸')
  1. SharePoint の「新しいフォルダーを作成する」を足し、「サイト アドレス」に工事案件サイト、「リストまたはライブラリ」に「図面」を選ぶ
  2. 「フォルダー パス」に、「フォルダ名」の出力と下のフォルダをつないで (フォルダ名)/01_計画 と入れる
  3. 同じアクションを (フォルダ名)/02_確認申請 (フォルダ名)/03_施工図 の分だけ足す
  4. ライブラリを「見積」「写真」に変えて、同じように下のフォルダの分を足す
  5. SharePoint の「項目を更新する」を足し、「ID」にトリガーの ID、「案件フォルダ」に最初の「新しいフォルダーを作成する」の出力の「フォルダーへのリンク」を入れる(深いフォルダのリンクになるので、案件フォルダまでの URL を式で組んでもよい)
  6. Teams の「チャットまたはチャネルでメッセージを投稿する」で、「工事」チームに案件名とフォルダのリンクを投稿する
  7. 保存して、工事案件リストに試しに1件登録する
新しいデザイナーで「アイテムが作成されたとき」の下に「作成」と「新しいフォルダーを作成する」が並んだフロー全体
新しいデザイナーで「アイテムが作成されたとき」の下に「作成」と「新しいフォルダーを作成する」が並んだフロー全体

「フォルダー パス」に folder1/folder2/folder3 の形で書くと、途中のフォルダもまとめて作られます。案件フォルダを先に1回作ってから下のフォルダを作る必要はありません。

「新しいフォルダーを作成する」で、リストまたはライブラリに「図面」、フォルダー パスに「フォルダ名」の出力と「/01_計画」を入れたところ
「新しいフォルダーを作成する」で、リストまたはライブラリに「図面」、フォルダー パスに「フォルダ名」の出力と「/01_計画」を入れたところ

書き戻しで二度動かさない

手順8でリストを更新すると、同じリストの「アイテムが作成または変更されたとき」を使った別のフローがあれば、その更新で動きます。このフローのトリガーは「アイテムが作成されたとき」なので、自分の更新でもう一度動くことはありません。トリガーを「作成または変更」にしたいときは、「案件フォルダ」が空のときだけ動くトリガー条件を入れます。

@empty(triggerBody()?['Folder'])

フォルダを毎回作らずにコピーする手もある

決まったフォルダ一式を「テンプレート」フォルダとして作っておき、「フォルダーのコピー」で案件ごとに複製する方法もあります。下のフォルダの数が多いとき、フォルダの中に決まった書式(現場日報のひな形など)も入れておきたいときは、こちらの方が楽です。コピー先に同じ名前があると止まるので、案件番号で名前が重ならないようにしておきます。

「フォルダーのコピー」で、コピー元に「見積/_テンプレート」、コピー先に「見積」を選んだところ
「フォルダーのコピー」で、コピー元に「見積/_テンプレート」、コピー先に「見積」を選んだところ

メールの添付を決まったフォルダに保存する

取引先から届いた見積や発注の添付を、案件フォルダに保存する形です。メールのトリガーと添付の取り出し方は、Power AutomateでOutlookのメールを自動化:添付の保存・振り分け・定型メールの送信、で書いています。ここでは保存の部分だけ書きます。

  1. Outlook の「共有メールボックスに新しいメールが届いたとき (V2)」で info@sample-koumuten.example を指定し、「添付ファイルを含める」をはいにする
  2. 件名から案件番号(K-2026-031 の形)を取り出す
  3. 「Apply to each」で添付ファイルを1つずつ回す
  4. SharePoint の「ファイルを作成する」で、「サイト アドレス」に工事案件サイト、「フォルダー パス」に /見積/K-2026-031_山田様邸/発注書、「ファイル名」に K-2026-031_発注_20261031_(元のファイル名)、「ファイル コンテンツ」に添付ファイルの「コンテンツ」を入れる

案件フォルダの名前には施主名が入っているので、件名の案件番号だけでは場所が決まりません。工事案件リストを「アイテムを取得」で案件番号から引き、「案件フォルダ」列の値を使うのが確実です。

署名の画像(image001.png など)まで保存されるのを避けるには、「Apply to each」の中に条件を置き、添付の「インラインですか」がいいえのものだけ保存します。

WordやExcelをPDFにする

方法は2つあります。

方法コネクタ区分向いている場面
OneDrive の「ファイルの変換」OneDrive for Business標準作った見積書の Excel や Word をそのまま PDF にする
Word の「Microsoft Word テンプレートを設定する」→「Word 文書を PDF に変換する」Word Online (Business)Premium決まったひな形に案件名や金額を差し込んで書類を作る

Word Online (Business) コネクタは、Power Automate では Premium の区分です。PDF への変換だけでも、このコネクタを使うと Premium のライセンスが要ります。Microsoft 365 の範囲で済ませるなら、OneDrive の「ファイルの変換」を使います。

OneDriveの「ファイルの変換」で見積書をPDFにする

OneDrive コネクタは接続したアカウント自身の OneDrive しか扱えないので、SharePoint のファイルは一度 OneDrive に置いてから変換し、できた PDF を SharePoint に戻します。

順アクション中身
1「ファイルの作成時 (プロパティのみ)」見積ライブラリ。拡張子が xlsx のときだけ動かす
2SharePoint の「ファイル コンテンツの取得」トリガーのファイルの中身
3OneDrive の「ファイルを作成する」/PDF変換用 フォルダに一時ファイルを作る
4「遅延」数十秒待つ
5OneDrive の「ファイルの変換」対象の種類を PDF
6SharePoint の「ファイルを作成する」元のファイルと同じフォルダに PDF を作る
7OneDrive の「ファイルを削除する」一時ファイルを消す

トリガーの設定の「トリガー条件」に次を入れ、Excel のときだけ動かします。手順6で PDF を同じライブラリに作るので、条件がないと PDF の作成でまたトリガーが動きます。

@endsWith(triggerBody()?['{FilenameWithExtension}'], '.xlsx')

手順6のファイル名は、元の名前の拡張子を付け替えて作ります。

replace(triggerBody()?['{FilenameWithExtension}'], '.xlsx', '.pdf')
OneDrive の「ファイルの変換」で、ファイルに一時ファイルの ID、対象の種類に「PDF」を選んだところ
OneDrive の「ファイルの変換」で、ファイルに一時ファイルの ID、対象の種類に「PDF」を選んだところ

OneDrive に作った直後に変換すると「Bad gateway」で失敗することがあり、公式でも作成と変換の間に遅延を入れる回避策が書かれています。手順4の「遅延」はそのためです。

変換できる元の形式は、Word(doc・docx)、Excel(xls・xlsx・xlsm)、PowerPoint(ppt・pptx)、rtf、html、メール(msg・eml)などです。署名やパスワードの付いた Word、IRM で保護された文書は PDF にできません。

見積ライブラリの案件フォルダに、元の Excel と同じ名前の PDF ができているところ
見積ライブラリの案件フォルダに、元の Excel と同じ名前の PDF ができているところ

Wordテンプレートへの差し込み(Premium)

工事請負契約書や完成引渡書のように、決まったひな形に案件名・施主名・金額を入れて作る書類は、Word Online (Business) の「Microsoft Word テンプレートを設定する」を使います。

  1. Windows の Word デスクトップ版で「開発」タブを表示し、差し込みたい場所にプレーン テキストのコンテンツ コントロールを置く
  2. コントロールのプロパティでタイトルを「施主名」「工事名」「契約金額」のように付ける(同じタイトルは使わない)
  3. ひな形を SharePoint のライブラリに保存する
  4. フローで「Microsoft Word テンプレートを設定する」を足してひな形を選ぶと、コントロールのタイトルが入力欄として並ぶ
  5. 工事案件リストの値を入れ、できた文書を「ファイルを作成する」で保存し、必要なら「Word 文書を PDF に変換する」で PDF にする

公式の既知の制限では、使えるコントロールはプレーン テキスト・コンボ ボックス・ドロップダウン リスト・画像・繰り返しセクションで、日付選択やチェック ボックスは使えません。入力ファイルは10 MB までで、ひな形を Word for Mac や Word のブラウザ版で作ることはできません。多要素認証の条件付きアクセス ポリシーが有効な環境では、テンプレートを設定するアクションが使えないとも書かれています。Premium を入れる前に、自社の環境で1件試してから決めます。

ファイル名に日付と案件番号を入れる

ファイル名は式で組みます。式の書き方の基本は、Power Automateの式と変数:日付・文字列・配列をよく使う関数で扱う、で書いています。

作りたい名前式
今日の日付(日本時間)formatDateTime(convertFromUtc(utcNow(), 'Tokyo Standard Time'), 'yyyyMMdd')
日付と時刻formatDateTime(convertFromUtc(utcNow(), 'Tokyo Standard Time'), 'yyyyMMdd_HHmm')
案件番号_見積_日付.pdfconcat(triggerBody()?['ProjectNo'], '_見積_', formatDateTime(convertFromUtc(utcNow(), 'Tokyo Standard Time'), 'yyyyMMdd'), '.pdf')
使えない文字を置き換えるreplace(replace((元の文字), '/', '_'), ':', '_') を必要な文字の分だけ重ねる

utcNow() は世界標準時なので、日本時間に直さないと午前9時前の日付が前の日になります。

同じ名前のファイルがあるとき

同じ名前の扱いは、アクションによって違います。

アクション同じ名前があるとき
SharePoint の「ファイルのコピー」「ファイルの移動」「別のファイルが既に存在する場合」で、失敗させる・置き換える・別名にするを選ぶ
SharePoint の「ファイルを作成する」同じ名前で上書きされる動きになることがある。名前を一意にして避ける
OneDrive の「ファイルを作成する」使えない文字はアンダースコアに置き換えられる

いちばん安全なのは、名前が重ならないようにすることです。同じ日に何度も作る書類は、日付に時刻まで入れます(K-2026-031_見積_20261031_1530.pdf)。上書きされても、ライブラリのバージョン履歴から前の版に戻せます。

共有リンクを作る

協力業者に図面フォルダを見せるときは、SharePoint の「ファイルまたはフォルダーの共有リンクを作成する」でリンクを作ります。

設定選べるもの決め方
リンクの種類見るだけ・編集できる、の種類業者に見せるだけなら見るだけの種類
リンク スコープ組織内・すべてのユーザー(匿名)など社内だけなら組織内
リンクの有効期限日付(yyyy-MM-dd の形)匿名のリンクにだけ付けられる

「すべてのユーザー」のリンクは、管理者が匿名のリンクを許可しているときだけ作れます。許可されていない組織では、このアクションは失敗します。

「ファイルまたはフォルダーの共有リンクを作成する」で、リンクの種類に見るだけのもの、リンク スコープに組織内のものを選んだところ
「ファイルまたはフォルダーの共有リンクを作成する」で、リンクの種類に見るだけのもの、リンク スコープに組織内のものを選んだところ

社外への共有では、次を守ります。

  • 匿名のリンクは、知っている人なら誰でも開ける。メールの転送先にも届くので、図面や契約書には使わない
  • 社外の人に渡すときは、「アイテムまたはフォルダーへのアクセスを許可する」で相手のメールアドレスを指定する方が、誰が見られるかがはっきりする
  • 工事が終わったら「アイテムまたはファイルの共有を停止する」で共有を止める。引渡の日に動くフローにしておくと止め忘れがない
  • 社外共有そのものを許すかは、SharePoint 管理センターの設定で決まる。フローの前に管理者と決めておく

できないことと、その代わり

できないこと代わり
OneDrive コネクタでほかの人の OneDrive を触る置き場所を SharePoint にする
Word のテンプレート差し込みを標準コネクタでするExcel で書類を作って「ファイルの変換」で PDF にする。差し込みが要るなら Premium
PC の同期フォルダのファイルをクラウドフローで直接扱うSharePoint 上のファイルを扱う。PC 側の作業はデスクトップフローで
フォルダごとの細かい権限をフローだけで設計する権限はライブラリやサイトで分け、フローは共有リンクと共有の停止だけにする
圧縮ファイルの日本語の名前をそのまま展開するOneDrive の「フォルダーへのアーカイブの抽出」は日本語などのマルチバイトの名前に対応しない。送り手に圧縮せずに送ってもらう

よく詰まるところ

症状原因直し方
OneDrive のトリガーがファイルに反応しない50 MB を超えるファイルはトリガーが飛ばすSharePoint のトリガーを使う
PDF 変換が「Bad gateway」で失敗する作成直後のファイルを変換している作成と変換の間に「遅延」を入れる
大きいファイルの変換が失敗する変換の仕組み(Microsoft Graph)の説明には2 MBという上限が書かれている画像を圧縮する、ページを分けるなどして小さくする
PDF ができたら、またフローが動いた同じライブラリへの作成でトリガーが動いた拡張子のトリガー条件を入れるか、PDF を別のライブラリに置く
「ファイルを作成する」で名前のエラーになる/ : ? などの使えない文字、先頭・末尾の空白replace と trim で直してから渡す
フォルダー パスが見つからないと出るライブラリの表示名とURL上の名前が違う(「ドキュメント」の実体は Shared Documents など)「フォルダー パス」はフォルダの選択ボタンで一度選び、出てきた形をまねる
移動やコピーが失敗するファイルを誰かが開いて編集している少し待って再試行する設定にするか、時間をずらす
同期しているPCで「ファイルが見つからない」同期中や、クラウドだけにあるファイルクラウドフローは SharePoint 上のファイルを扱う。デスクトップフローはローカルにコピーしてから扱う
パスが長すぎるというエラーファイル名を含むパスが400文字を超えた案件フォルダの名前を短くし、深さを3段までにする
「URL からファイルをアップロードする」が成功したのにファイルがないこのアクションは20秒たつと成否にかかわらず成功を返すアップロード後にファイルの有無を確かめる
匿名リンクの作成が失敗する管理者が匿名のリンクを許可していない組織内のリンクか、相手を指定した共有にする
差し込みのアクションが使えないWord Online (Business) は Premium。多要素認証の条件付きアクセスで使えないこともあるライセンスと環境を確かめる。標準コネクタなら Excel から PDF にする

日本語のフォルダ名やファイル名は、フローの中でそのまま使えます。詰まるのは、「SharePoint に HTTP 要求を送信する」で URL にパスを入れるときで、日本語や空白をエンコードしないとエラーになります。標準のファイル アクションを使っている限りは、気にしなくて済みます。

次にやること

ファイルの置き場所が決まったら、入口と書類を広げます。

公式テンプレートの「添付ファイルを SharePoint に保存する」のようなものから始め、フォルダー パスとファイル名だけ会社の決まりに合わせて直すと、最初の1本が早く作れます。

あわせて読む