LoginSignup
3
6

More than 3 years have passed since last update.

【PowerApps/PowerAutomate】アプリからSharePointのドキュメントへアップロードする簡単な方法

Last updated at Posted at 2021-03-05

やったこと

PowerAppsからSharePointのドキュメントにファイルを保存する際、
SharePointリストを介することで、簡単に作成ができるという内容です。
初心者向けだと思います。

【処理概要】
・PowerAppsの編集フォームの添付ファイルにアップロードしたいファイルを添付。
・SharePointリストの項目が新規作成されたことをトリガーにワークフローが動く。
・ワークフローでリストの添付ファイル情報を取得、ドキュメントに新規ファイル作成。

というように、アップロードというよりも実質はコピーです。

【メリット】
JSONを使わない
・複数ファイルも対応
・画像、Excelなどファイルの種別を問わず実行可能
・(比較的)簡単につくれる
・ドキュメントフォルダに保存することで、その後のワークフローでExcelなどの中身をいじれる

【デメリット】
・PowerAutomateのライセンスが必要
・一時保存に使ったSharePointリストを削除する必要がある。(手動orワークフロー)

作成手順

SharePointでリスト作成

PowerAppsでアプリ作成

PowerAutomateでワークフロー作成

手順1.SharePointでリスト作成

まずリストを作成します。必要な列があれば作成してください。
サンプルではタイトルだけあれば問題ないです。

列の追加はしませんが、リスト作成時にデフォルトでSharePointが作成してくれる添付ファイルとIDを非表示→表示にします。
[列の追加の右の下向きマーク]>[列の表示/非表示]をクリック。
image.png

必要な項目にチェックを付けて適用を押します。
image.png

ID、添付ファイルが表示されました。
image.png

手順2.PowerAppsでアプリ作成

今回のサンプルでは1つのスクリーンですべて収まりました。
左側がファイル登録用の編集フォームで、右が結果を表示するギャラリーです。

image.png
左に「編集フォーム」を挿入。先ほどのSharePointリストを連携します。
右にギャラリーでこちらも同じSharePointリストを連携しました。

・ScreenのOnVisibleにNewform関数
・右上の丸矢印アイコンにReflesh関数
・保存ボタンにはSubmitForm関数
・編集フォームのOnSuccessにもNewform関数
 ⇒スクリーンが一つしかないので、次の入力のためにOnSuccessにもNewform関数を設定する

……ちょっと待って!

OnVisibleは別スクリーンから移動したタイミングで実行される為、
1スクリーンしかない今回のアプリでは実行すると……

image.png

OnVisibleに設定したNewform関数が実行されずに「表示するアイテムがありません」となってしまいます。

1度保存して開き直してもいいですが、最初の1度だけなら
image.png

このようにタイトルのOnSelectにNewform関数を設定し、
1度クリックし実行してから消しておくという方法でカバーできます。
(もしかしたらホームスクリーンを作ったほうが早いかもしれませんね。ご参考までに)

手順3.PowerAutomateワークフロー

【作成するフロー】
image.png

詳しく説明していきます。
フローは「自動化されたクラウドフロー」から作成します。
image.png

フロー名を入力。トリガーは「項目が作成されたとき」を選択します。
image.png

トリガーのサイトのアドレスとリスト名を候補から選択します。
サイトのアドレスが候補から出てこない場合はSharePointサイトのURLをコピーして貼り付けてください。
image.png

新しいステップをクリックし「添付ファイルの取得」を追加します。

「添付ファイルの取得」と「添付ファイルのコンテンツの取得」という2つのアクションがあるので間違えないようにしてください。
一番下のIDは動的な値から選択します。
image.png

続いて「添付ファイルのコンテンツの取得」を追加します。
image.png
上の「ID」には「項目が作成されたとき」のIDを使用しますが
下の「ファイル識別子」には「添付ファイルの取得」のIdを使用してください。

「ファイル識別子」を動的な値から選択すると、Apply to eachが自動で作成されました。
これは添付ファイルには"2つ以上のファイルが含まれていることがある"からです。
このように1つだけとは限らない値を入力した場合はApply to Eachが自動で作成されます。
image.png

次のアクションはこのApply to eachの中に追加します。
添付ファイルのコンテンツ取得のすぐ下、赤枠で囲った「アクションの追加」から追加します。
image.png

ファイル作成を追加します。
フォルダーのパスにはファイルを保存するSharePointドキュメントのパスを入力します。
フォルダのパスは右のフォルダマークをクリックすると出てくる一覧から選択することもできます。
image.png

今回は関数を使ってアプリで入力したタイトルをフォルダ名として使ってみます。
※concat関数は,(カンマ)で区切った複数の文字列を一つの文字列として繋げてくれます。
フォルダーのパスにカーソルを合わせて、動的なコンテンツを入力する吹き出しの中で右の「式」をクリックすると、式の入力欄が出てきます。
image.png

設定する式は以下の通りです。
triggerOutputs()?['body/Title']の部分はトリガーの「項目が作成されたとき」のタイトルを返してくれます。

concat('/Shared Documents/添付ファイル保存/',triggerOutputs()?['body/Title'])

式を入力したら必ずOKを押しましょう。(PowerAppsのように迂闊に欄外をクリックすると消えます……)

image.png

ファイル名には「DisplayName」を、ファイルコンテンツには「添付ファイルのコンテンツ」を設定します。
image.png

フローは以上で完成です。
以下は全体図です。
image.png

動作確認

タイトルを入力し、添付ファイルを選択します。
今回はExcelファイルと画像ファイルを選択してみました。
タイトルは最後にファイルを格納するフォルダ名となります。
image.png

保存ボタンを押すと左側がクリアされ、右のギャラリーにデータが1件増えました。
image.png

PowerAutomateを開いて確認します。
ワークフローは正常に終了しています。
image.png

SharePointドキュメント内の「添付ファイル保存」というフォルダ内に「テスト」と「テスト2」というフォルダが作成されています。
image.png

テスト2の中には添付ファイルで選択した2つのファイルが作成されました。
image.png

終わり

最初に触れましたが、ドキュメントフォルダ内にExcelファイルを作成することで
Excelファイル内のテーブルや行を取得したり変更したりすることができます。

フォルダ名にタイトルを使用すると被る可能性があるので、必ずフォルダを分けたい場合はIDと組み合わせるなど工夫が必要です。

3
6
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
3
6