Power Automate クラウドフロー メール本文① 動的コンテンツでアイテムリンク & HTMLが壊れない調整(クラシック)

はじめに

Power Automate クラウドフローでは、SPOリストのアイテムへの動的なリンクを作成する方法として、HTML形式で記載して作成することができます。
以前からある方法ですが、クラシックエディタの場合に表示が壊れ(触らなければ大丈夫)、中身を触って保存すると内容も壊れてしまうという点がありました。
本記事その①では、メール本文でHTML形式で動的にSPOアイテムへのリンク作成方法とその際に壊れないようにする調整についてご紹介します。

また、その②では、モダンエディターだとタグの付き方が異なっている点とHTMLが壊れるのが解消されていた点をご紹介します。

アイテムリンクのURL

以下メール送信で本文にSPOリストのアイテムへのリンクを付けたサンプルです。

リンクURLの構文としては以下の感じになります。
シンプルにはリストのURL(サイト~リストURLまで)に
/DispForm.aspx?ID=<アイテムのID> (表示画面)
/EditForm.aspx?ID=<アイテムのID> (編集画面)

を付ける形です。それぞれアイテムを表示、編集する画面へ飛べます。

TIPSアイテムのリンクを使う方法もありますがURLが長ったらしくなる点もあるので以前からあるリンク作成でご紹介

Codeアイテム表示画面へのリンク
https://<サイトのURL>/Lists/<リストのパス>/DispForm.aspx?ID=<アイテムのID>

アイテム編集画面へのリンク
https://<サイトのURL>/Lists/<リストのパス>/EditForm.aspx?ID=<アイテムのID>

例:
https://XXXX.sharepoint.com/sites/siteX/Lists/List_01/DispForm.aspx?ID=3
https://XXXX.sharepoint.com/sites/siteX/Lists/List_01/EditForm.aspx?ID=10

ブラウザにURL(アイテムIDまで)を入力してアクセスを確認

上記の構文で一旦自分のリストへ置き換えてアイテムIDまで入れたURLを作成し、ブラウザのURLに入力して正しくアクセスできるか確認するのが確実です。以下のようにアイテムの表示画面が表示されればリンクは正しく作成されています。※アイテムIDは存在するものを指定してください。

クラウドフローで URLとアイテムIDでリンク作成

上記のようにURLを生成すればよいので、一旦変数に入れたサンプルでご紹介します。

TIPSメール送信アクションが複数ある場合は変数や作成アクションで?ID=までのURLを作って利用するほうがメンテナンス性が高くなります。一か所だったり少ない場合は直接メール本文にURLを書いても問題はありません。

IDパラメータまでのURLを変数に指定

以下のように変数に上記の?ID=までの部分を定義してメール本文で利用します。アイテムのIDはトリガーの動的コンテンスから取得してメール本文内でURL部分と繋げます。Power AppsトリガーなどでIDを渡している場合はそれを使えばOKです。

HTMLタグ表示形式でメール本文でaタグで指定

メール本文に記載するリンクのサンプルです。
通常の入力画面では動的なコンテンツをリンクに含めるためにHTMLタグ形式の表示に切り替えます。

TIPS(通常画面でも式で動的コンテンツを指定すれば作れるがHTML形式のほうが動的コンテンツを使えやりやすい。その②の最後で解説)


・上部のアイコンをクリックし、HTML形式に変更
・リンク文字列としたい部分をaタグを使って以下のように修正
※aタグの構文の説明は割愛

できたらいったん保存して動作を確認します。

NOTE★これでリンクはできていますが後述するHTML表示が壊れる点がありますので後の内容で再度調整しています。

Code<a href=”@{variables(‘アイテムリンク用URL’)}@{triggerOutputs()?[‘body/ID’]}”>アイテムはこちら</a>


リンクの動作を確認

フローを保存したらテスト実行してみます。リストにアイテムを登録して動作を待ちます。
以下のようにリンクが設定された内容でメールが届き、リンクをクリックしてアイテムへ遷移すればOKです。

NOTE以下のようにHTMLタグのままだったりする場合は、構文が間違っている可能性が高いので確認して修正しましょう。
※以下はaタグの最初に余分な半角スペースがあるため→半角スペースを除去して解消
その他、半角”や<>が全角になっているなど

本文のHTMLリンク部分が壊れる事象

上記作成したリンク付きの本文ですが、フローを保存して再度編集画面で開くと、HTML形式から通常の入力モードに切り替わって表示され、HTMLのリンクの部分が壊れていると思います。今回のサンプルでは以下のようになっています。

再度開くと通常モードで開きaタグで作ったリンク部分がおかしな表示になっている

触らなければ大丈夫だが修正したりHTMLへ切り替えるとほんとに壊れる

上記の状態で本文のところを触らずに保存した場合は実際のメール本文は壊れておらず一応問題はないです。
が、以下のようにHTML形式に再度切り替えたり、本文を修正した場合は壊れた内容となりメール本文も壊れます。

NOTE上記からHTML形式に切り替えた場合 → タグに余計な情報が入り内容がおかしくなる。いったん切り替えると通常に戻してもさらに壊れた内容になっている。

この状態となったら再度HTMLタグを元の内容に手修正して保存する必要があります。
本文の内容を調整したい場合など毎回この部分を修正しないといけないのは困ってしまいますよね💦
次のセクションで対策方法をご紹介します。

元のHTMLタグに色々余計なものが追加され壊れる→元の内容に手修正で戻す必要あり

この状態で保存してメール送信すると以下のようにメール本文が壊れています。

HTMLタグが壊れないようにする方法(PタグをなくしHTML固定にする)

これが本記事の本題です。HTML形式とした場合に、最初に先頭と末尾にPタグが入っています。
これが入っていると通常の表示に切り替えれます。その点はよいのですがその際にリンクが壊れてしまいます。
このPタグを除去します!するとHTML形式の切り替えアイコンがグレーアウトし、通常モードに戻せない状態となります。

再度Pタグをつければ戻せるようになります。どうもこの通常のMarkdown形式モードだとHTMLとした場合はPタグで囲まれている必要がありそうでした。

先頭と末尾のPタグを削除する。HTML形式切り替えアイコンがグレーアウトして使えなくなる

この状態で保存します。そうすると次に編集で開いた際もHTML形式のモードで表示されそのままの状態で残ります。

HTML形式のまま保持され本文は壊れていない

もちろんメール本文も問題ありません。

モダンデザイナーでは壊れない。HTMLの構成が異なる。

上記クラシックエディターでのHTMLが壊れない実装方法についてでした。Pタグを除去するだけでHTML固定となり解消されました。
ただ、実はモダンデザイナーの場合、そもそもこのHTML形式のタグの付き方が異なり、上記の壊れる事象は発生しません。
クラシックで壊れた表示となっている本文をモダンデザイナーで開いた場合は、以下のようになっていて通常モードでもリンク文字列が正常に表示されています。

HTML形式にすると属性がついたPタグで囲まれていてaタグ部分も壊れてません。そのため保存したり再表示してもクラシックのように壊れることはないです。

モダンだとクラシックで作ったHTMLも通常モードで普通に表示される。タグがクラシックと異なる

この点はその②で違いについてもう少し詳しくご紹介します。

おわりに

今回は以前からある方法のメールのHTML形式で動的なリンク文字列を作成する方法と、その際に通常だとリンクが壊れる点およびその解消方法をご紹介しました。
本来はモダンとクラシックでHTMLのタグの付き方が違ってるなーという点を記事にしようと思ったんですが、その前にご紹介しようと思いその①とその②に分けました。

次回その②ではモダンの場合のHTML構成とクラシックの違いなどご紹介しようと思います。それでは!

関連記事

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS