LoginSignup
2
6

More than 3 years have passed since last update.

PowerAppsから画像をSharePointにアップロードする

Posted at

PowerAppsを使って撮影した画像をSharePointにアップロードしたいと思います。

この記事ではPowerApps -> PowerAutomate -> SharePoint
というフローで画像のアップロードを行います。

PowerApps側

Screen上にAdd Pictureコンポーネント(UploadedImage1)を追加します。
Screen Shot 2020-04-21 at 10.28.15.png

こんな感じでScreenに置きます。

Screen Shot 2020-04-21 at 10.27.12.png

ボタンを設置し、OnSelectに下記の数式を加えます。

UpdateContext(
            {
                docJson: Substitute(
                    JSON(
                        UploadedImage1.Image,
                        IncludeBinaryData
                    ),
                    """",
                    ""
                )
            }
        );
UpdateContext({flowResponse: SaveImageToSharePoint.Run(docJson)});
UpdateContext({imagePath: flowResponse.path});

UpdateContextでコンテキスト変数、docJsonに画像のバイナリデータを保持します。
これをPowerAutomateのフローであるSaveImageToSharePointを
SaveImageToSharePoint.Run で呼び出し、docJsonを渡します。

コンテキスト変数flowResponseにその戻り値が帰ってくるようにしています。
また、flowResponse.pathでSharePointで保存された画像のパスにアクセスできるようにしています。

次に、PowerAutomateのフロー、SaveImageToSharePointをみてみます。

PowerAutomate側

ステップはこのようになります。

Screen Shot 2020-04-21 at 10.21.56.png

JSONの解析 ステップでは

{
    "type": "object",
    "properties": {
        "JSONの解析_コンテンツ": {
            "type": "string"
        }
    }
}

PowerAppsから渡されたJSONのスキーマはこのようになります。

次に、SharePointのファイル生成で肝になるのがFile Contentです。

asdasdfsadfasdfasdf.png

File Contentに書く内容は
1. 上のJSONの解析ステップJSONの解析_コンテンツプロパティを
2. dataUriToBinaryでData URIのフォーマットをバイナリに変換する
です。
dataUriToBinary(body('JSON_の解析')?['JSONの解析_コンテンツ'])

最後のPowerAppsまたはFlowに応答するステップでは

PowerApps側への戻り値を作ります。この場合、ファイル名とファイルのパスとなります。

以上が一連の流れです。

余談ですが、PowerApps側でこのファイルパスの戻り値をPowerAppsの画像コンポーネントのImageに下記のように設定すると、

Concatenate(
    "https://your_org_sub_domain.sharepoint.com/sites/your_directory/",
    path
)

SharePointにアップロードした画像を表示することができます。

しかし、モバイルアプリ版のPowerAppsからはCookie認証の関係でSharePointにある画像は表示することができません。

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