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

進行中の作業タイマー

このワークフローにより、開発チームは課題の作業に費やした時間を追跡し、作業項目を自動的に記録できます。動作はストップウォッチ式の作業タイマーに似ています。独立したタイマーフィールドの値を使用してタイマーを開始および停止する代わりに、このワークフローは状態フィールドのデフォルト値を使用します。

課題が進行中状態で費やした時間を測定することにより、課題の処理に費やした時間を追跡する場合は、このワークフローを使用します。

名前

@jetbrains/youtrack-workflow-work-timer

前のタイトル

進行中の作業タイマー

自動添付

いいえ

モジュール

課題の進行中にタイマーを開始する (変更時のルール)

課題の状態が更新されたときにタイマーを停止する (変更時のルール)

このワークフローを有効にするには

  1. プロジェクトのタイムトラッキングを有効にして構成します。手順については、タイムトラッキングの有効化と構成を参照してください。

  2. タイマー時間という名前の date and time タイプを保存するフィールドをプロジェクトに追加します。

  3. 進行中の作業タイマーワークフローをプロジェクトにアタッチしてください。

このワークフローが記述どおりに機能するには、プロジェクトで進行中値を含む状態フィールドを使用する必要があります。プロジェクトの課題のステータスを追跡するために異なるフィールドと値を使用する場合は、それに応じてワークフローを変更してください。

ユースケース

開発者が課題の状態を進行中に変更すると、ワークフローは現在の時刻をタイマー時間フィールドに入力します。開発者が課題の状態を進行中から別の状態に変更すると、課題を更新したユーザーに代わって、タイマー時間と現在の時間の間に費やされた時間を持つ作業項目が課題に追加されます。

モジュール

このワークフローには 2 つのモジュールがあります。

課題の進行中にタイマーを開始する

課題の状態が進行中に変更されると、このルールはタイマー時間の値を現在の時刻に設定します。

const entities = require('@jetbrains/youtrack-scripting-api/entities'); const workflow = require('@jetbrains/youtrack-scripting-api/workflow'); exports.rule = entities.Issue.onChange({ title: 'Start timer when issue is in progress', guard: (ctx) => { return ctx.issue.fields.becomes(ctx.State, ctx.State.InProgress); }, action: (ctx) => { ctx.issue.fields.TimerTime = Date.now(); workflow.message('The timer is started.'); }, requirements: { TimerTime: { type: entities.Field.dateTimeType, name: 'Timer time' }, State: { type: entities.State.fieldType, InProgress: { name: 'In Progress' } } } });

課題の状態が更新されたときにタイマーを停止する

開発者が課題の状態を進行中から別の状態に変更すると、このルールは課題の作業に費やされた時間を計算し、課題に作業項目を追加します。作業項目には、このルールによって定義されたメッセージと計算された所要時間が含まれます。

const entities = require('@jetbrains/youtrack-scripting-api/entities'); const workflow = require('@jetbrains/youtrack-scripting-api/workflow'); exports.rule = entities.Issue.onChange({ title: 'Stop timer when issue state is updated', guard: (ctx) => { const issueFields = ctx.issue.fields; return issueFields.was(ctx.State, ctx.State.InProgress) && issueFields.TimerTime; }, action: (ctx) => { const issue = ctx.issue; let duration = issue.project.intervalToWorkingMinutes(issue.fields.TimerTime, Date.now()); if (duration) { const newWorkItem = { description: 'The work item automatically added by the timer.', date: Date.now(), author: ctx.currentUser, duration: duration }; issue.addWorkItem(newWorkItem); workflow.message('Work time added'); } }, requirements: { TimerTime: { type: entities.Field.dateTimeType, name: 'Timer time' }, State: { type: entities.State.fieldType, InProgress: { name: 'In Progress' } } } });
2025 年 11 月 21 日

関連ページ:

ストップウォッチ式の作業タイマー

このワークフローにより、課題の処理に費やされた時間を追跡するタイマーが有効になります。動作は進行中の作業タイマーに似ています。このワークフローでは、状態の値を使用してタイマーを開始および停止する代わりに、独立したタイマーフィールドの値を使用します。状態フィールドの値に影響を与えることなく、課題の処理に費やした時間を追跡する場合は、このワークフローを使用します。ワークフロータイマーは、サーバーのグローバルタイムトラッキング設定と同期されます。タイマーは就業日の時間を記録するだけで、1 日あたりの定...

ローカライズされたワークフローメッセージ

YouTrack サーバーの言語設定はシステム全体で設定されます。通知とメッセージを含むワークフロールールを作成するときは、システムで使用されている言語でテキストを入力してください。YouTrack にバンドルされているデフォルトのワークフローは、サポートされているすべての言語にローカライズされています。これらのワークフローは、関数を使用して、ローカライズされたテキスト文字列を作成します。この関数はソース文字列を参照し、システムで使用されるデフォルト言語に基づいてローカライズされた文字列を返しま...

プロパティの組み合わせを発行する

このワークフローは、issue 内のフィールドに特定の値の組み合わせを設定することからユーザーをブロックします。このワークフローをカスタマイズして、避けたい値の組み合わせを防ぐことができます。このワークフローの詳細については、YouTrack サーバーまたは YouTrack クラウドのドキュメントの対応するページを参照してください。2025 年 11 月 21 日ヘルプデスク進行中の作業タイマー