YouTrack工作流中如何检测自定义字段是否为Date类型?
YouTrack工作流脚本中准确判断Date类型字段的方案
在YouTrack工作流脚本里,直接通过issue.fields['字段名']获取的Date和DateTime类型字段值均为数字格式的时间戳,无法直接区分类型,且官方文档提及的dateTimeType、dateType属性返回undefined。要实现100%准确的动态判断且无需指定requirements,可以通过以下方案解决:
核心思路
利用issue对象内置的$fields元数据集合,它包含所有字段的完整类型定义信息,通过字段名称匹配对应的元数据,即可精准判断字段类型。
实现代码
function example(ctx) { const { issue } = ctx; const { fields } = issue; Object.entries(fields).forEach(([fieldName, fieldValue]) => { // 从元数据中找到对应字段的定义 const fieldDef = issue.$fields.find(field => field.name === fieldName); if (fieldDef) { const typeName = fieldDef.type.name; const isPureDate = typeName === "Date"; const isDateTime = typeName === "DateTime"; // 这里可以根据判断结果执行后续逻辑 console.log(`字段[${fieldName}]类型:${typeName}`); console.log(`是否为纯Date类型:${isPureDate}`); } }); }
说明
$fields是YouTrack工作流中issue对象的原生元数据,无需提前配置requirements即可访问- 通过
fieldDef.type.name可以精准获取字段的类型名称,完全避免了通过时间戳数值猜测类型的误差 - 该方案支持动态遍历所有字段,适配任意自定义或系统字段的类型判断
内容的提问来源于stack exchange,提问作者Welnyr
相关产品推荐
相关产品推荐

