LoginSignup
1
4

More than 1 year has passed since last update.

PowerAutomateで指定したフォルダを作成してファイルを保存するフロー

Posted at

概要

  • Power Automateを使ってSharePointのライブラリに指定のフォルダを作ってファイルをアップロードするフローを作成してみました。
  • Flowボタンから実行するインスタントフローを使って、フォルダ名の指定やファイルの登録を行います。

image.png

背景

  • SharePoint上に社内ExcelテーブルのIDと紐づくフォルダを作って、その中に数枚写真を保存するという作業がありました。
    • 主にPower BIからフォルダにリンクしたり、サムネイル表示したり。
  • 職場のネットワーク環境が悪く、手作業でSharePointにフォルダを作るのも遅いし、Automateで少しでも楽できないかと考えました。
  • 覚え書きとして投稿してみます。
    • 結論的にはローカルでフォルダを作ってフォルダごとアップロードする方が早かったですが・・

image.png

フローの解説

全体

image.png

ポイント

SharePointにファイルを保存するにあたり、File1~3に設定した引数からファイル名、ファイルコンテンツを取得する必要があります。
image.png
ただ、普通にトリガーの出力にある「File1」の中身を確認しても、以下のようにファイルコンテンツしか無く、ファイル名がありません。
image.png
クリックしたときに「本文(triggerBody)」から以下の参照が設定されるからですね。
triggerBody()?['file']?['contentBytes']

そこで、出力にある「本文」の中身を確認してみます。
fileはcontentBytesとnameがあり、それぞれコンテンツとファイル名が格納されていますね。
File1~3の内部名は、file、file_1、file_2となっているのでちょっとややこしいですね。
※作成アクションで本文を設定してテストし中身を確認。Firefoxだとjsonをいい感じに整形してくれます。
image.png

ということで以下のようにしてファイル名、コンテンツを取得するようにします。

triggerBody()?['file']?['name']
triggerBody()?['file']?['contentBytes']

実際には、ファイルの数だけ関数を書くのは非効率なので、先に引数名の配列を作成し、Apply to eachで回して動的に参照する工夫を行います。

outputs('作成_Body')?[items('Apply_to_each')]?['name']

解説

トリガー
入力の追加で実行時の引数を追加します。
image.png

作成 Body
これは本文の出力確認用なので無くてもOKです。
image.png

作成 FolderPath
フォルダを作成するフォルダ(親)のパスを入力。/DocLib以降のパスです。
image.png

新しいフォルダーの作成
concat関数で文字列を結合してファイルパスを生成。
既にあるフォルダを作成してもエラーにならず、中身も消えないので事前の存在確認は不要です。
image.png

引数名の配列
トリガーの引数であるFile1~3の内部名は、file、file_1、file_2なので配列形式で指定。
image.png

Apply_to_each
先程の配列をApply_to_eachで一要素ずつ参照し、値をもとにtriggerBody()を参照しそれぞれのファイル情報を取り出します。
ループの現在のアイテムはitems('Apply_to_each')で参照できるため、以下のようにすると、トリガーの本文から動的に値を取得できます。
triggerBody()?[items('Apply_to_each')]

条件 引数の空判定
ファイルが必ず3つ添付されるとは限らず、空の引数を参照するとエラーとなります。
条件アクションでfile引数が指定されているかチェックします。
Empty(triggerBody()?[items('Apply_to_each')])

はいの場合
ファイルの作成アクションでファイルの作成を行います。

ファイル名
triggerBody()?[items('Apply_to_each')]?['name']
ファイルコンテンツ
triggerBody()?[items('Apply_to_each')]?['contentBytes']

image.png

以上です。
ファイル登録後にFlowBotからTeamsチャットへファイルの作成の出力「アイテムへのリンク」を使って保存先を通知してもいいですね。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4