Workflow studioでの「メール送信」アクション内の本文のリンク作成方法について

__ __216
Tera Contributor

「メール送信」アクションで作成を進める場合,「通知」で作成していた本文に,申請者が申請した「要求」など,他の通知メールにもリンクを記載していたのですが,「メール送信」アクションでも同様に使用することは可能なのでしょうか。

 

本文記載予定のリンク
Click here to view Request: ${request.URI_REF}

____216_0-1716346690885.png

 

1 件の受理された解決策

senon
Tera Sage

メール送信アクションでは${request.URI_REF}のような記述はできません。
動的なリンクを生成する場合は工夫が必要です。メンテナンス性やリリースを考えるとスクリプトが必要になりますが、最小限にとどめると以下で達成できると思います。以下の手順が必要です。

①インスタンス名を取得するカスタムアクションを作成する
②Flow Desgnerでメインのフローでフロー変数を定義して、動的URLを生成する

③メール送信アクションに②のデータを定義する

 

①インスタンス名を取得するカスタムアクションを作成する
スクリプトはここで必要になります。

1.workflow studioでアクションを新規で作成します(名前、説明は任意、アプリケーションはGlobal)

ここでは名前を「Get Instance name」とします。

 

2.スクリプトステップ内にServiceNowインスタンス名を取得するスクリプトを記載し、Output Variablesを定義します。このスクリプトは実行している現在のインスタンス名を取得してくるので、リリース時にインスタンス名が変わってもインスタンスに併せて取得してきてくれます。

 

(function execute(inputs, outputs) {
outputs.base_url = gs.getProperty('glide.servlet.uri');
})(inputs, outputs);

 

senon_0-1716600212276.png

 

3.Action Outputでスクリプトで取得した値をFlow上のデータピルとして使えるように定義します。

senon_2-1716600391394.png

 

 

②Flow Desgnerでフロー変数を定義して、動的URLを生成する

ここでは、メールを送信するメインのフローに戻ります。フロー変数を定義しその変数にメールに添付したい動的リンクを定義します。

1.フロー変数の定義

保存ボタンの右の三点リーダーから"フロー変数"をクリックし、変数を作成します。

senon_3-1716601050061.png

2.フローロジックの"Set Flow Valuables"を選択し、先ほど定義した変数を指定してリンクを作成します。

HTMLの<a>タグでハイパーリンク化します。

1つ目のデータピルは①で取得したインスタンス名です。

2つ目は要求アイテムのsysIDです。

3つ目はリンクの表示テキストなので、ここでは要求の番号を指定しています。

senon_5-1716601209200.png

 

③メール送信アクションに②のデータを定義する

メール本文に②のデータピルを指定して、動的リンクをメールに仕込みましょう。

senon_6-1716601348717.png

 

④フローの全体像と結果

senon_7-1716601482372.png

フローをテストして送信したメールの結果

 

senon_8-1716601520394.png

 

元の投稿で解決策を見る

4件の返信4

senon
Tera Sage

メール送信アクションでは${request.URI_REF}のような記述はできません。
動的なリンクを生成する場合は工夫が必要です。メンテナンス性やリリースを考えるとスクリプトが必要になりますが、最小限にとどめると以下で達成できると思います。以下の手順が必要です。

①インスタンス名を取得するカスタムアクションを作成する
②Flow Desgnerでメインのフローでフロー変数を定義して、動的URLを生成する

③メール送信アクションに②のデータを定義する

 

①インスタンス名を取得するカスタムアクションを作成する
スクリプトはここで必要になります。

1.workflow studioでアクションを新規で作成します(名前、説明は任意、アプリケーションはGlobal)

ここでは名前を「Get Instance name」とします。

 

2.スクリプトステップ内にServiceNowインスタンス名を取得するスクリプトを記載し、Output Variablesを定義します。このスクリプトは実行している現在のインスタンス名を取得してくるので、リリース時にインスタンス名が変わってもインスタンスに併せて取得してきてくれます。

 

(function execute(inputs, outputs) {
outputs.base_url = gs.getProperty('glide.servlet.uri');
})(inputs, outputs);

 

senon_0-1716600212276.png

 

3.Action Outputでスクリプトで取得した値をFlow上のデータピルとして使えるように定義します。

senon_2-1716600391394.png

 

 

②Flow Desgnerでフロー変数を定義して、動的URLを生成する

ここでは、メールを送信するメインのフローに戻ります。フロー変数を定義しその変数にメールに添付したい動的リンクを定義します。

1.フロー変数の定義

保存ボタンの右の三点リーダーから"フロー変数"をクリックし、変数を作成します。

senon_3-1716601050061.png

2.フローロジックの"Set Flow Valuables"を選択し、先ほど定義した変数を指定してリンクを作成します。

HTMLの<a>タグでハイパーリンク化します。

1つ目のデータピルは①で取得したインスタンス名です。

2つ目は要求アイテムのsysIDです。

3つ目はリンクの表示テキストなので、ここでは要求の番号を指定しています。

senon_5-1716601209200.png

 

③メール送信アクションに②のデータを定義する

メール本文に②のデータピルを指定して、動的リンクをメールに仕込みましょう。

senon_6-1716601348717.png

 

④フローの全体像と結果

senon_7-1716601482372.png

フローをテストして送信したメールの結果

 

senon_8-1716601520394.png

 

senon
Tera Sage

こちらの問題は解決しましたでしょうか?
もし解決している場合は【Solution as Accept】を押して、他のユーザーにが問題が解決している質問か判断できるようにしてあげてください。

__ __216
Tera Contributor

ご回答いただきありがとうございます。
ご教授いただいた内容にて設定し,無事リンクを設定することができました。
丁寧な説明も記載いただきましてありがとうございました。


ken kurihara
Tera Contributor

TOP配下のドメインで作成したメインフローからは、カスタムアクションが呼び出せなかったのですが、カスタムアクションをglobalで作成しなおしたところ、公開もできるようになり、無事メインフローから呼び出せるようになりました。
ただ、アイコンがglobalアイコンではなく、グリーンのServiceNowアイコンになります(globalデク作成したにもかかわらず、globalグループ内にはなかったです)。
なぜでしょうか?