YouTrack および Hub ヘルプの開発者ポータル

アクションルール

アクションルールを使用すると、コマンドとして適用したり、課題、記事、コメント、添付ファイルのその他を表示メニューからアクセスしたりできるアクションを使用して YouTrack を拡張できます。

YouTrack バージョン 2024.1 以前では、課題ベースのアクションルールのみが利用可能です。YouTrack バージョン 2024.2 以降では、次の YouTrack エンティティにアクションルールを適用できます。

  • 課題

  • 記事

  • 課題に関するコメント

  • 記事コメント

  • 添付ファイルを発行する

  • 記事の添付ファイル

サンプルアクションルール

このルールにより、現在のユーザーに課題を自動的に割り当てるコマンドが有効になります。このコマンドは、1 つ以上の課題に一度に適用できます。

const entities = require('@jetbrains/youtrack-scripting-api/entities'); exports.rule = entities.Issue.action({ title: 'Take this issue!', command: 'take', guard: (ctx) => { return ctx.issue.isReported; }, action: (ctx) => { ctx.issue.fields.Assignee = ctx.currentUser; }, requirements: { Assignee: { type: entities.User.fieldType } } });

このアクションルールを定義するコンポーネントは次のとおりです。

  • 通常どおり、スクリプトはワークフロー API の entities モジュールを参照する require ステートメントで始まります。

  • exports.rule プロパティは、Issue.action メソッドを使用して、宣言に続くスクリプトをアクションルールとしてエクスポートします。

  • ルール本体には、次のプロパティの定義が含まれています。

    プロパティ

    説明

    タイトル

    人間が読めるタイトル。

    タイトルは、課題のその他を表示メニューで利用可能なアクションのリスト内の項目のラベルとして使用されます。

    このプロパティが設定されていない場合、アクションのリストには command プロパティの値が表示されます。

    コマンド

    カスタムコマンドに使用されるテキスト。

    このコマンドが 1 つ以上の課題に適用されると、このルールで定義されたアクションが実行されます。

    コマンドはサーバー全体で定義されます。つまり、これらのルールが異なるプロジェクトに関連付けられている場合でも、同じコマンドで 2 つのアクションルールを持つことはできません。

    ガード

    アクションルールが有効になるタイミングを決定する条件。

    ガード条件が満たされていない場合、カスタムコマンドを課題に適用することはできません。コマンドはコマンドを適用ダイアログに提案されず、課題のその他を表示メニューにそのタイトルは表示されません。

    アクション

    コマンドが適用されるときに選択される各課題に適用される変更。このアクションは、課題ごとに個別に実行されます。変更は、コマンドを適用するユーザーに代わって行われます。

    この例では、選択したすべての課題を現在のユーザーに割り当てます。

    要件

    ルールがエラーなしで実行されるために必要なエンティティのリスト。このプロパティにより、ルールをプロジェクトに安全にアタッチできるようになります。

    この例では、ルールが関連付けられているプロジェクトに user タイプを格納する担当者フィールドがあることだけが必要です。このフィールドがないと、ワークフローリストにエラーが表示されます。必須フィールドがアタッチされるまで、ルールを有効にすることはできません。

課題以外のエンティティのアクションルールのサンプルについては、対応するエンティティの API リファレンスを参照してください。

ユーザー入力のあるサンプルアクションルール

アクションルールを呼び出すユーザーに追加データを要求できます。このようなアクションルールがトリガーされると、ユーザーに入力を求めるダイアログが表示されます。

ユーザー入力を必要とするアクションルールは、タイトルの後の省略記号 ... によって、リストの他のアクションと区別できます。

Custom action with input on the list

その他を表示メニューからオプションを選択すると、入力ダイアログが表示されます。

User input for an action rule

コマンドを使用して、ユーザー入力でアクションルールを呼び出すこともできます。この場合、コマンドダイアログ自体が入力を求めます。

User input for an action rule from the command dialog

このサンプルルールは、選択した課題のコピーを別のプロジェクトに作成するコマンドを有効にします。

const entities = require('@jetbrains/youtrack-scripting-api/entities'); exports.rule = entities.Issue.action({ title: 'Clone issue to another project', command: 'clone to project', action: function (ctx) { const clone = ctx.issue.copy(); clone.project = ctx.userInput; }, userInput: { type: entities.Project, description: 'Select target project' } });

このアクションルールを定義するコンポーネントは次のとおりです。

  • スクリプトは、ワークフロー API の entities モジュールを参照する require ステートメントで始まります。

  • exports.rule プロパティは、Issue.action メソッドを使用して、宣言に続くスクリプトをアクションルールとしてエクスポートします。

  • ルール本体には、次のプロパティの定義が含まれています。

プロパティ

説明

タイトル

人間が読めるタイトル。

このタイトルは、課題のその他を表示メニューで利用可能なアクションのリスト内の項目のラベルとして、またユーザー入力を要求するダイアログのタイトルとして機能します。

このプロパティが設定されていない場合、アクションのリストには command プロパティの値が表示されます。

コマンド

カスタムコマンドに使用されるテキスト。

このコマンドが 1 つ以上の課題に適用されると、このルールで定義されたアクションが実行されます。

コマンドはサーバー全体で定義されます。つまり、これらのルールが異なるプロジェクトに関連付けられている場合でも、同じコマンドで 2 つのアクションルールを持つことはできません。

アクション

コマンドが適用されるときに選択される各課題に適用される変更。このアクションは、課題ごとに個別に実行されます。変更は、コマンドを適用するユーザーに代わって行われます。

この例では、ユーザーが選択したターゲットプロジェクトに課題をコピーします。

ユーザー入力

このアクションルールがユーザーから要求する入力。

この例では、予期されるオブジェクトのタイプは Project です。ユーザー入力として要求できるオブジェクトタイプの完全なリストについては、ユーザー入力に使用できるオブジェクトの種類を参照してください。

サンプルルールでは、ユーザー入力ドロップダウンとコマンドを適用ダイアログのカスタム説明も設定します。

ユーザー入力ドロップダウン:

User input for an action rule

コマンドダイアログ:

User input for an action rule

ユーザー入力に使用できるオブジェクトの種類

アクションルールでユーザーから要求できるオブジェクトの型の完全なリストを以下に示します。ユーザー入力用に type プロパティを設定する場合は、以下に示すように entities モジュールからタイプを参照してください。

オブジェクトタイプ

API 表記法

日時

entities.Field.dateTimeType

日付

entities.Field.dateType

整数

entities.Field.integerType

フロート

entities.Field.floatType

ピリオド

entities.Field.periodType

文字列

entities.Field.stringType または 'string'

ビルド

entities.Build

列挙型フィールド

entities.EnumField

課題

entities.Issue

課題タグ

entities.IssueTag

所有地

entities.OwnedField

プロジェクト

entities.Project

プロジェクトバージョン

entities.ProjectVersion

状態

entities.State

ユーザー

entities.User

ユーザーグループ

entities.UserGroup

例: ユーザーが列挙型フィールドから値を選択できるようにするには、入力タイプを entities.EnumField に設定します。この場合、ctx.userInput には選択された列挙型の値が含まれるため、互換性のあるフィールドに直接割り当てたり、name などのプロパティを読み取ったりすることができます。

var entities = require('v1/entities'); exports.rule = entities.Issue.action({ title: 'Update type', command: 'update type', action: function(ctx) { ctx.issue.fields.Type = ctx.userInput; }, userInput: { type: entities.EnumField, description: 'Select a type' }, requirements: { Type: { type: entities.EnumField.fieldType } } });
2026 年 7 月 06 日