はじめに
Power AutomateでRSSと連携した記事更新通知を行っているのですが、概要の文字数が長い場合に、Teamsでの通知上、あまり好ましくない状態になることがわかりました。
概要を掲載する際に文字数をいい感じに切り詰める方法を調べました。
そもそもの仕組みと課題
JBS Tech Blogの更新をトリガーとして、
処理の一つとして、Teamsに更新通知を送る、ということをやっています。
このとき、概要の文字数が少なめだと、詳細表示をしなくても記事本文へのリンクが表示されるのですが
概要が長いと、詳細表示をクリックするまでは記事本文のリンクが見えません。
出来れば通知を見て記事本文に誘導するまではクリック数を減らしたいので、この文字数を調整することを考えました。
substring式で文字数を調整する
RSSのクエリパラメータで文字数を減らすことも考えたのですが、どうもなさそうだったので、Power Automate側で何とかすることにします。
substring式を使うと任意の位置の文字列を抽出することができるので、これを利用します。
文字数については環境にもよるので悩みましたが、ひとまず、1920x1080でTeamsクライアントを最大化して使っているときの2行分である130文字を上限としてみます。
そこで、まずはこう書いてみたのですが…
substring(triggerOutputs()?['body/summary'],0,130)
RSSフィードの概要文字数が130文字を超える場合はいいのですが、記事内で概要を明記してるなどで概要の文字数が130未満の場合にエラーになってしまうことがわかりました。
エラー文字列としてはこうなります。
部分文字列の長さは、ソース文字列の長さである '63' より長くすることはできません。
どうやら、substringでは「130文字で指定しておいて足りなかったらある分だけ使う」といういい感じに切り詰めることはやってくれないようです。
条件分岐とsubstring式を使って文字数を調整する
概要の長さが130文字未満かどうかで、処理を分けることにしました。
こんな感じになりました。
順に見ていきます。
概要の文字数を設定しておく
まず、今回基準として130文字としましたが、調整する可能性もあるので、後で変更できるようにしておきます。
整数型の変数outline-length
を用意し、初期値を130にしておきます。
条件分岐で最大文字数を調整する
length式を使って、RSSから取得した記事概要の文字数をカウントします。
length(triggerOutputs()?['body/summary'])
この数が130以上の場合は、特になにもしません。
130未満の場合はエラーになるので、outline-length
を記事概要の文字数で上書きします。
概要の文字数を調整する
先ほどと同様に概要を切り詰めます。
が、切り詰める位置の終わりの数字を先ほどoutline-length
として調整しましたので、これを利用します。
substring(triggerOutputs()?['body/summary'],0,variables('outline-length'))
これで、文字数が短い場合はその文字数、多い場合は最初に指定した数(今回は130)が使われることになり、substring式のエラーは出なくなります。
こちらは、概要が63文字だった場合の例です。outline-length
が63文字に上書きされています。
後続のsubstring式の処理も成功しました。
いい感じに調整した概要を通知で利用する
あとは、Teams通知でRSSフィードの内容をそのまま使用していた部分を、先ほど文字数を調整した変数に変更します。
おわりに
文字数を調整する、という簡単な操作だと思ったのですが、思わぬところで引っ掛かりました。
誰かの参考になれば幸いです。
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧