今回の記事はこちらの続きになります。
未読の方は是非合わせて読んでみてください。
PowerAppsのギャラリーをCSVでエクスポートする方法【PowerAutomate】
この開発を行った経緯
PowerAutomateを使用して作成したファイルのパスの作成は本来「パスによるファイルコンテンツの取得」のアクションを使いファイルの作成から動的なコンテンツを参照することで使うことができると考えていました。
開発の時間はありましたがとりあえず動くものを作りたかったので、力業でリンクを作成することになったためこの開発に取り組みました。
作成したファイルのURLの解析
今回のゴールは、「作成したファイルのリンクをメールに添付してユーザーに送信すること」でした。なので実際にSharepointの画面で作成されたファイルからリンクのコピーを行い確認することで、それと同じものを作成することができればとりあえずの目的は果たせると考えURLのコピーを行いました。
実際のURLを確認すると下のような構成になっていることが確認できました。
[サイトのアドレス(base)][フォルダのパス(path)][ファイル名(path)][?d=w(query)][Eタグの値の一部(tag)]
リンクがこのような5つのパーツで構成されていることが分かったため「これは変数にそれぞれのパーツを定義して最後につなげれば行けるんじゃないか?」と考え実際の作業に入りました。
変数の作成
先程の項でリンクが5つのページに分かれていることが明らかになったのでここからURLを作成するための文字列を定義していきます。
まず簡単に定義できるものとして、[サイトのアドレス]と[?d=w]は動的なコンテンツを使用しなくても定義できるため「変数を初期化する」のアクションを使用し定義しました。
次に[フォルダのパス]と[ファイル名]は動的なコンテンツのpathの項目を使用することで定義することができます。
しかし注意点として、pathに半角スペースが入っている場合はリンクでは"%20"といった値に書き換わっていることがあります。その場合はreplace関数を使用して使っている環境に合うように調整しましょう。
値の部分にこのように数式を入れてあげることで解決できると思います。
replace(outputs('ファイルの作成')?['body/Path'],' ','%20')
最後にEtagの部分ですが、これも動的なコンテンツから参照することができます。
"Etagは{00000000-aaaa-1111-bbbb-123456789abc},0"のような形で出力されますが必要なのは{}の中の値だけなので次のような数式を使い必要な部分だけを抽出します。
toLower(split(split(outputs('ファイルの作成')?['body/ETag'],'{')?[1],'}')?[0])
リンクの作成
ここまでの作業で必要な要素を準備することができたので、いよいよリンクの作成に入ります。
新しく「変数を初期化する」のアクションを使用し今まで準備したものを次のような数式で結合します。
concat(variables('base'),variables('path'),variables('query'),replace(variables('tag'),'-',''))
これを行うことで力業ですがリンクの準備ができました。
あとは動的なコンテンツとしてメールに添付をすることで、エクスポートしたファイルのリンクをメールで通知することができます。