SharePoint 2013 ワークフローでメール本文に挿入したリンクが切れてしまう

SharePoint 2013(含 SharePoint Online)での、ワークフローの小さなバグです。メール送信アクションの本文に挿入したハイパーリンク、たとえば「現在のアイテムのURL」が正しくリンクしない場合があります。原因は「ワークフロー参照」がきちんと処理されないため。その内容と、簡単な対処方法です。

なお、このエントリは Office 365 Advent Calendar の一環として投稿しています。

まず、再現してみます。SharePoint Designer 2013 で SharePoint 2013(または SharePoint Online)のサイトに接続してワークフローを作成します。ここではごく簡単な「ワークフローを実行するとアイテムへのリンクが指定ユーザーにメールで送信される」を設計します。

20121212image01

メール送信アクションの、メール本文を編集します。右端のリンクアイコンから「ハイパーリンクの編集」を呼び出し、「アドレス」の[fx]をクリックして文字列ビルダーを呼び出します。

20121212image03

アイテムへの直リンクなので、URLの書式は (リストのURL)/DispForm.aspx?ID=(アイテムのID) です。ID値はアイテムにより変わるため「ワークフロー参照」で動的に取得します。[%現在のアイテム:ID%] です。なお、ここでは表示文字列にも同じ設定を行い、同じ URL で表記されるようにしました。

20121212image04

20121212image05

さて、このワークフローを実行してメールを送ると、こんなメールが届きます。一見、きちんとURLが組み立てられているように見えます。

20121212image06

しかし、表記ではなく実際のリンク先を確認すると…あれ?

20121212image07

実はこのリンク、[表示文字列]についてはきちんと「ワークフロー参照」が処理されて ID 値になっている(=正しいURL)のですが、肝心の[アドレス]では何故か変換されず「[%現在のアイテム:ID%]」そのままなのです。当然、これをクリックしても正しいアイテムは開きません。これは SharePoint 2013 ワークフローのちょっとしたバグのようです。

さて、回避方法ですが、どうやら「アドレス欄で組み立てたワークフロー参照」についてのみ問題が発生するようなので、ローカル変数を使ってこれを回避してしまえばOK。

1.リボンの[ローカル変数]から適当な変数を定義する。
2.[ワークフローの変数を設定する]アクションを挿入し、この変数にワークフロー参照を含むURLを設定する。

20121212image08

3.メール本文に普通にハイパーリンクを挿入する。
4.アドレス欄については、文字列ビルダを使わず[fx]から[ワークフローの変数とパラメーター|変数:xxxx]を指定する。

20121212image09

一手間増えますが、これで回避可能です。

さて、次回の Office 365 Advent Calendar ですが、クリエ・イルミネートの沼口さんです。


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9