SharePoint 2013 ワークフローでメール本文に挿入したリンクが切れてしまう
SharePoint 2013(含 SharePoint Online)での、ワークフローの小さなバグです。メール送信アクションの本文に挿入したハイパーリンク、たとえば「現在のアイテムのURL」が正しくリンクしない場合があります。原因は「ワークフロー参照」がきちんと処理されないため。その内容と、簡単な対処方法です。
なお、このエントリは Office 365 Advent Calendar の一環として投稿しています。
まず、再現してみます。SharePoint Designer 2013 で SharePoint 2013(または SharePoint Online)のサイトに接続してワークフローを作成します。ここではごく簡単な「ワークフローを実行するとアイテムへのリンクが指定ユーザーにメールで送信される」を設計します。
メール送信アクションの、メール本文を編集します。右端のリンクアイコンから「ハイパーリンクの編集」を呼び出し、「アドレス」の[fx]をクリックして文字列ビルダーを呼び出します。
アイテムへの直リンクなので、URLの書式は (リストのURL)/DispForm.aspx?ID=(アイテムのID) です。ID値はアイテムにより変わるため「ワークフロー参照」で動的に取得します。[%現在のアイテム:ID%] です。なお、ここでは表示文字列にも同じ設定を行い、同じ URL で表記されるようにしました。
さて、このワークフローを実行してメールを送ると、こんなメールが届きます。一見、きちんとURLが組み立てられているように見えます。
しかし、表記ではなく実際のリンク先を確認すると…あれ?
実はこのリンク、[表示文字列]についてはきちんと「ワークフロー参照」が処理されて ID 値になっている(=正しいURL)のですが、肝心の[アドレス]では何故か変換されず「[%現在のアイテム:ID%]」そのままなのです。当然、これをクリックしても正しいアイテムは開きません。これは SharePoint 2013 ワークフローのちょっとしたバグのようです。
さて、回避方法ですが、どうやら「アドレス欄で組み立てたワークフロー参照」についてのみ問題が発生するようなので、ローカル変数を使ってこれを回避してしまえばOK。
1.リボンの[ローカル変数]から適当な変数を定義する。
2.[ワークフローの変数を設定する]アクションを挿入し、この変数にワークフロー参照を含むURLを設定する。
3.メール本文に普通にハイパーリンクを挿入する。
4.アドレス欄については、文字列ビルダを使わず[fx]から[ワークフローの変数とパラメーター|変数:xxxx]を指定する。
一手間増えますが、これで回避可能です。
さて、次回の Office 365 Advent Calendar ですが、クリエ・イルミネートの沼口さんです。