Automation for Jira - 一部のスマート値に空の値が表示される
プラットフォームについて: Data Center のみ。 - この記事は、 Data Center プラットフォーム。
この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。 Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。
*Fisheye および Crucible は除く
要約
「Jira 自動化のスマート値」のドキュメンテーションで説明されているように、スマート値を自動化ルールで使用して Jira フィールドを表示または操作できます。
例:
ログ アクションで以下のスマート値を使用する場合は、次のようになります。
{{issue.description}}

ルール監査ログに課題の説明が次のように表示されているはずです。
場合によっては、下の例のように、スマート値が空の値を返すことがあります。

このナレッジ ベース記事の目的は、スマート値が空の値を返す可能性があるすべてのシナリオと、それぞれの見分け方をリストとして表示することです。
ソリューション
根本原因 1 - フィールドが空である
フィールドが空の場合は、スマート値は空の値を返します。
たとえば、ルール監査ログに [説明] フィールドをログとして記録しようとしているとします。このフィールドが (下図のように) 空の場合、監査ログにデータは表示されません。
![[説明] フィールドが強調された Jira 課題](https://images.ctfassets.net/zsv3d0ugroxu/10syKAw1u2yan3NnXNtFcl/3eb6131842ba8b8ca6ef6691055423ce/Screenshot_2024-05-31_at_5.10.35_PM.png)
根本原因 2 - フィールドが非表示に設定されている
「フィールドの動作を指定する」のドキュメンテーションで説明されているように、フィールド設定を特定の課題タイプに関連付けることによって、課題タイプに応じて動作や Jira 課題フィールドを変更できます。フィールドが特定の課題タイプで非表示に設定されている場合、自動化ルールはそのフィールドにアクセスできません。その結果、フィールドが空でなくても、このフィールドへのアクセスに使用されたスマート値は空の値を返します。
プロジェクトの特定の課題タイプに対してフィールドが非表示に設定されているかどうかを確認するには、プロジェクト管理で [プロジェクト設定] > [フィールド] の順にページを移動して、フィールド設定の横にある鉛筆アイコンをクリックしてフィールドを検索します。[表示] というリンクがこのフィールドの横に表示されている場合は、このフィールドが非表示に設定されていることを意味します。下の例では、[ラベル] フィールドが非表示に設定されていることがわかります。
![[表示] オプションが強調表示された [ラベル] カスタム フィールド](https://images.ctfassets.net/zsv3d0ugroxu/Kip4yzG34t6mUXDUX3xb8/136a8d718079af2e3cb4404dcc4f1d8d/Screenshot_2024-05-31_at_5.09.38_PM.png)
一部のフィールドは、非表示に設定されていると、予期しない動作をすることがあります。たとえば、リンクされた課題のフィールドが非表示に設定されている場合、非表示になるべきであっても、また自動化ルールではアクセスできなくても、このフィールドは引き続き [課題を表示] 画面に表示されます。この動作の詳細については、ナレッジ ベース記事「「課題リンクを削除」アクションでリンクが削除されない」をご確認ください。このため、[課題を表示] 画面にフィールドが表示されているからといって、必ずしもそのフィールドが非表示に設定されていないわけではありません。フィールドが非表示になっているかどうかを確認するには、[フィールド設定] ページでご確認ください。
根本原因 3 - 間違った構文が使用されている
Jira のフィールド値を操作する、またはログとして記録する際には、正確な構文を使用することが極めて重要です。構文の間違い (大文字と小文字の間違いなど) や、使用するカスタム フィールド ID に誤りがある場合、スマート値は空の値を返します。
例 1: Jira システム フィールド
Jira システム フィールドの一部にアクセスするための正しい構文は次のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
{{issue.key}}
{{issue.description}}{
{issue.url}}
{{issue.summary}}
{{issue.assignee.displayName}}
{{issue.reporter.displayName}}
{{issue.status.name}}
{{issue.issuetype.name}}
{{issue.resolution.name}}
{{issue.fixVersions.name}}
{{issue.created}}
{{issue.updated}}
{{issue.project.name}}
フィールドに使用する issuetype や fixVersions の大文字、小文字に注意してください。
issuetype の代わりに issueType を使用すると、スマート値は空の値を返します
FixVersions の代わりに fixversions を使用すると、スマート値は空の値を返します
例 2: カスタム フィールド
カスタム フィールドには、フィールド名または「customField_XXXXX」(XXXXX はフィールドの ID で、カスタム フィールドを設定 / 編集する際に URL から取得可能) という構文を使用してアクセスできます。たとえば、カスタム フィールドの ID が 10500 であるが、ID が 10700 のフィールドがないとします。この場合、次のようになります。
次のスマート値はフィールドの内容を返します。
{{issue.customField_10500}}
次のスマート値は空の値を返します。
{{issue.customField_10700}}
根本原因 4 - 「課題のルックアップ」アクションが使用され、サポートされていないフィールドにスマート値経由でアクセスしている
「Jira スマート値 - 課題」ドキュメンテーションの「lookupIssues」セクションで言及されているように、このアクションでは限られたフィールドのリストのみを使用できます。たとえば、カスタム フィールド、ラベル、コンポーネントはこのアクションではサポートされていません。
その結果、Jira 課題にコンポーネント フィールドなどのサポートされていない値が含まれていたとしても、次のようになります。
以下の構文では空の値が返されます。
{{lookupIssues.components}}
しかし、以下の構文では値が返ります
{{issues.components}}
「lookupIssues」アクションでより多くのフィールドをサポートするためのオープンな機能リクエストがあります。JIRAAUTOSERVER-877 - 「課題のルックアップ」アクション - より多くのフィールドのサポートを追加する
根本原因 5 - 「課題の削除時」トリガーが使用されており、使用できるフィールドが限定されている
「課題の削除時」トリガーを使用する際に、すべての Jira フィールドがスマート値を通じて利用できるわけではありません。
スマート値ではアクセスできないフィールドの例を以下に示します (リストは完全ではない場合がありますのでご注意ください)。
任意のバージョン タイプ フィールド (例: 「修正バージョン/s」)
コンポーネント フィールド
その結果、「課題の削除時」トリガーと一緒に次のスマート値のいずれかを使用すると、空の値が返されます。
{{issue.components.name}}
{{issue.fixVersions.name}}
この制限は、オープンな機能リクエスト JIRAAUTOSERVER-961 で追跡されています - 「課題の削除時」トリガーを使用する際に、すべての Jira フィールドがスマート値を通じて利用できるわけではありません。
根本原因 6 - フィールドがサードパーティのアドオン由来であり、スマート値ではサポートされていない
サードパーティのアドオンからのフィールドのうち、スマート値がサポートされていないタイプもあります。たとえば、ScriptRunner アドオンのスクリプト フィールドはスマート値ではアクセスできず、これらのフィールドは空の値を返します。
ScriptRunner のスクリプト フィールドのサポートを追加するためのオープンな機能リクエストがあります。JIRAAUTOSERVER-620 - スマート値で検出される ScriptRunner スクリプト フィールドのサポートを追加する
根本原因 7 - フィールドは元々空で、自動化ルール内で更新された
自動化ルールがトリガーされ、ルールによって設定されたフィールドが空の場合、この値にアクセスするスマート値は空になります。この動作が発生するのは、ルールがトリガーされたときにスマート値に課題フィールドの内容が反映されるためです。
すべてのフィールドの最新コンテンツにスマート値経由でアクセスできるようにするには (一部のフィールドがルールによって変更される可能性がある場合)、スマート値を使用する前に、「課題データを再取得」アクション (ドキュメンテーション「Jira 自動化のアクション」を参照) を追加する必要があります。このアクションにより、Jira 課題のすべてのフィールドが再読み込み / 更新され、ルールにはすべての Jira フィールドの中で最新の値が含まれるようになります。
下のスクリーンショットにある自動化ルールをご確認ください。
自動化ルールがトリガーされた時点では、[説明] フィールドは空です
[説明] フィールドは自動化ルールによって設定されます
説明フィールドを初めてログに記録すると、ルールに値を追加したにもかかわらず空の値が返されます
2 回目に [説明] フィールドのログを記録すると、空でない値が返されます。これは、「課題データを再取得」アクションを使用したためです
根本原因 8 - ルールがアセット (以前のインサイト) のフィールドによる属性にアクセスしようとしている
[アセット/インサイト] フィールドのサポートは、現在 Jira Server /Data Center の自動化に限定されています。
その結果、次の例のような構文を使用してフィールド属性にアクセスしようとすると、空の値が返されます。
例 1
issue.InsightField.<attribute>
例 2
issue.InsightField.object.<attribute>
この制限は、オープンな機能リクエストで追跡されています。 JIRAAUTOSERVER-313 - スマート値によるすべてのインサイト属性へのアクセスをサポートします 情報の収集
根本原因 9 - ルールがブランチ内で作成された変数にアクセスしようとしている
ルールのブランチ内で作成された変数は、ブランチ外ではアクセスできません。その結果、スマート値を介してブランチ外のこの変数にアクセスを試みた場合、スマート値は空の値を返します。
この制限は、オープンな機能リクエスト JIRAAUTOSERVER-985 で追跡されています - 自動化: ブロック外で変数を使用する機能 - if/else またはブランチブロック内で作成された変数はメイン ブランチで更新されません 情報の収集
根本原因 10 - ルールがスマート値「webhookData.issues」にアクセスしようとしている
ナレッジ ベース記事「Automation for Jira での受信 Webhook データの処理」に記載されているように、webhookData
スマート値を使用して受信 Webhook ペイロードからの情報を取得できます。
Webhook ペイロードにパラメーターとして issues
が含まれている場合、このパラメーターの内容は webhookData
スマート値から削除され、代わりにissues
スマート値に移動することにご注意ください。
その結果、以下の式は常に空の出力を返します。
{{webhookData.issues}}
例:
次の受信 Webhook ペイロードの例を見てみましょう。
1
2
3
4
5
6
{
"issues": [
"GRD-4000"
],
"data": {"releaseVersion":"5.3.2"}
}
そのような場合は、次の操作を行います。
残りのデータは
issues
スマート値に含まれ、以下の構文を使用してアクセスできます。{{issues}}
{{issues.key}}
{{issues.summary}}
etc...
残りのデータは
webhookData
スマート値に含まれ、以下の構文を使用してアクセスされます。{{webhookData}}
上記の式を使用すると、以下の出力が得られます。
{"releaseVersion":"5.3.2"}
次の構文を使用しても何も返されません。
{{webhookData.issues}}
根本原因 11 - ルールがスマート値「webhookResponse.body」にアクセスしようとしている
「Jira スマート バリュー - 課題」のドキュメントで説明されているように、Web リクエストを送信アクションを使うと、以下のスマート値を使用して Webhook レスポンスのデータにアクセスできます。{{webhookResponse.body}}
このスマート値は、[応答待ち] → [この Webhook からの応答を受信するまで、後続のルール アクションの実行を遅延します] オプションにチェックが入っていない限り、何も返しません。

このオプションがチェックされていない場合、自動化ルールは Webhook からの応答を受け取るまで待ちません。また、ルールにデータを入力する機会がなかったため、スマート値「webhookResponse.body」は空になります。
根本原因 12 - 変数は文字列操作関数で使用され、空白の値として扱われます
Automation For Jira 9.0 (Jira 9.11.0 に同梱) では、「変数の作成」という名前の新しいアクションを導入しました。このアクションにより、スマート値の内容を変数内に保存できます。変数は、ブランチ内を含め、ルールの全範囲で使用できます。
「String manipulation functions do not work properly with variables (文字列操作関数が変数で適切に動作しない)」というバグで説明されているように、変数が文字列操作関数 (concat()、replace()、replaceAll() など) の内部で使用される場合、その変数は空白として扱われます (この変数がテキスト フィールドの値を含むように作成されたとしても)。
たとえば、ルールが以下のように構成されているとしましょう。
ルールは、variableContainingSummary という名前の変数を作成するように構成されており、以下のスマート値を含む課題の要約が含まれるように構成されている。
{{issue.summary}}
監査ログ アクションで以下の構文を記録するように構成されている。
{{issue.key.concat(variableContainingSummary)}}
ルールは次のようになります。

この場合、構文 {{issue.key.concat(variableContainingSummary)}}
は空白の出力を返します。
変数を文字列操作関数内で使用できるようにするには、変数名の末尾に .trim () を追加して、強制的に空白ではなく文字列として扱われるようにする必要があります。上記の例を使用すると、concat 関数で変数が適切に使用されるように以下のように変更できます。
{{issue.key.concat(variableContainingSummary.trim())}}
根本原因 13 - issue.id
スマート値が文字列操作関数で使用されています
issue.id のスマート値を使って (issue.key、issue.summary などの、他の課題のスマート値ではなく) を文字列操作関数で使用すると、空白の出力になります。下のスクリーンショットに示されているルールに従うと、ログ アクションは空白の出力を返します。
1
Issue Summary-Key: {{issue.summary.concat("-").concat(issue.id)}}

この KB 記事が作成された時点では、それがバグによるものなのか、予想されたもの (issue.id 変数のタイプによるもの) なのかは明確ではありません。
回避策として、次の方法をお勧めします。
変数の作成アクションを使用して issue.id スマート値を変数内に保存します (ここでは、この変数を variableContainingIssueId と呼びます)。
{{issue.id}}
文字列操作関数で課題 ID にアクセスするには、下図のように変数の後に .trim() を付けます。
Issue Summary-Key: {{issue.summary.concat("-").concat(variableContainingIssueId.trim())}}
提案されるルールは次のようになります。

根本原因 14 - issue.id
スマート値が文字列操作関数で使用されています
文字列操作関数で {{issue.id}}
スマート値 ({{issue.summary}}
、{{issue.description}}
などの他の課題スマート値ではなく) を使用すると、空白の出力になります。
ログ アクションに以下のテキストを追加すると、このアクションは空白の出力を返します。
1
Issue Summary-ID: {{issue.summary.concat("-").concat(issue.id)}}
代わりに、以下の 2 つのアクションを含むルールを構成することをお勧めします。
変数の作成アクションを使用して issue.id スマート値を変数内に保存します (ここでは、この変数を variableContainingIssueId と呼びます)。
1
{{issue.id}}
文字列操作関数で課題 ID にアクセスするには、下図のように変数の後に .trim() を付けます。
1
Issue Summary-ID: {{issue.summary.concat("-").concat(variableContainingIssueId.trim())}}
文字列操作関数で課題 ID を使用すると便利なルールの例については、「添付ファイルにカスタマー向け URL を含むメールを送信するルールの作成方法」を参照してください。
根本原因 15 - スマート値がアクセスするカスタム フィールドが英語以外の言語に翻訳されています
カスタム フィールドが他の言語に翻訳されている場合、ルール アクターのプロファイルが英語以外の言語を使用するように設定されていれば、このフィールドを参照するすべてのスマート値は空の値を返します。
たとえば、次のように仮定しましょう。
ストーリー ポイントのカスタム フィールドは、ドイツ語に翻訳されるように構成されている
ルール アクターのプロファイル設定はドイツ語で構成されている
ルールは、以下のスマート値を介してストーリー ポイントのカスタム フィールドにアクセスするように構成されている
1
2
3
{{issue.Story Points}}
{{triggerIssue.Story Points}}
{{lookupIssues.Story Points}}
この場合、これらすべてのスマート値は空の値を返します。このようなことが起こらないように、ルール アクターを、英語知識を有するプロファイルのユーザーに変更することをお勧めします。
この動作は、チケット JIRAAUTOSERVER-1025 でバグとして報告されました
根本原因 16 - スマート値は、「設定するフィールドを選択...」オプションおよびリスト タイプ フィールドを使用して「課題の編集」アクションで使用されています
[コンポーネント] フィールドなどのリスト タイプのフィールドが [設定するフィールドを選択...] オプションで設定されている場合、トリガー課題のコンポーネントに複数の値があると、以下の構文は空の値をコピーします。
1
{{#triggerIssue.components}}{{name}}{{/}}

この理由の背後には、スマート値が「設定するフィールドを選択...」オプションでコンポーネント名のリストではなく文字列として扱われるという事実があります。その結果、コンポーネントに複数の値が含まれている場合、コンポーネント名のリストは文字列に変換され、ルールは文字列値を [コンポーネント] フィールドにコピーしようとしますが、これは成功しません。その結果、[コンポーネント] フィールドは空の値に設定されます。
この動作は、JIRAAUTOSERVER-1072 のバグで追跡されています。
[コンポーネント] フィールド (またはその他のリスト タイプのフィールド) が正しくコピーされるようにするには、スマート値を使用する代わりに、「値をコピーする課題」オプションを「トリガー課題」とともに使用します。
この内容はお役に立ちましたか?