やりたいこと
Power Automateを使ってSharePointListsにURLをハイパーリンクで転記したい!
というケースはよくあると思います。
そんなときは基本的にはSharePoint Listsを列を選択する際「ハイパーリンク」を設定すればOKですが、実はこれ、制限があるんですよね。
事象
SharePoint Listsの列を追加する際、列の種類を選択できますね。ハイパーリンクというものがあるのでこれを追加してみましょう。
「既定のハイパーリンク」列が追加されました!
早速なにかリンクを入力してみましょう。
URLには255を超える文字を含めることはできません
上記のようなエラーが出てしまいました。
255文字以外のURLであることが保証されている!というのであればそれでも良いのですが、なかなかそんなことはないですよね。そして開発する側としては安定性は担保しておきたい。では255を超えるURLをハイパーリンクとして設定したい場合はどうすればよいのでしょう。
解決策
実はこれ、案外簡単に解消できます。
最初の列の設定時に「ハイパーリンク」ではなく、「複数行のテキスト」を使用します。
今回は
「拡張リッチテキストを使用(画像、表、ハイパーリンクを含むリッチテキスト)」
「既存のテキストに変更を追加する」
「この列に情報が含まれている必要があります」
ただ、これだけではまだ足りません。試しに[https://google.com]という値を入力しましたがリンクになりませんでした。
まだ「ここに入力されるテキストをリンクにしてください」という指示を与えていないからですね。
この列に入力された値をハイパーリンクにするには、画面右上の歯車マーク>「リストの設定」をクリックします
リストの詳細設定画面が表示されましたね。
ここで操作したい列を選択します。今回は「複数行のハイパーリンク」列を選択します。
すると上図のような設定画面に辿り着きます。
一番下に「列の書式設定」という項目がありますね。
ここでJSON形式で詳細な書式設定をすることができます。ここを編集することで、「複数行のハイパーリンク」列に入力された値はURLなんで、ハイパーリンクにしてくださいね、という指定をすることができます。
「いやJSONってなに?」
という方ももちろんいらっしゃると思います。安心してください。今回は何も考えずにコピペするだけです。JSONについてのご説明はまたの機会、もしくは他の方にお譲りするとして、とにかく以下の文字列をコピペしましょう。
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "a",
"txtContent": "@currentField",
"attributes": {
"target": "_blank",
"href": "= @currentField"
}
}
中のコードを変更する必要はありません
コピペしたら、画面右下の「OK」を押して、リストの画面に戻りましょう。
すると・・・
しっかりハイパーリンクになってましたね!
これで256文字以上のURLを入力してもしっかりハイパーリンクになるようになりました。
それほど難しくないので、開発時にURLをハイパーリンクで表現したいような場合は標準の「ハイパーリンク」ではなく、「複数行テキスト」を使用したうえでJSONの書式設定をするように心がけましょう。