You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jira字段行为脚本故障:无法将Scheduled Start Time日期字段值复制至Planned Scheduled Start Time字段

解决Jira字段行为脚本复制日期字段值的问题

看起来你遇到的问题主要出在两个关键点上:字段赋值方向搞反了,以及日期值的格式没有匹配Jira表单字段的要求。咱们一步步来修正:

问题分析

  1. 字段方向错误:你的代码里是把Planned Scheduled Start Time(目标字段)的值赋值给Scheduled Start Time(源字段),这和你想要的复制方向完全相反。
  2. 日期格式不兼容:Jira的日期时间字段在表单中需要特定格式的字符串(通常是ISO 8601标准格式),直接调用toString()得到的格式Jira无法识别,直接传递原始Date对象也可能在字段行为的上下文里不生效。

修正后的Groovy脚本

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.datetime.DateTimeFormatterFactory
import com.onresolve.jira.groovy.user.FieldBehaviours
import groovy.transform.BaseScript

@BaseScript FieldBehaviours fieldBehaviours

// 定义源字段和目标字段的名称
final String SOURCE_FIELD = "Scheduled Start Time"
final String TARGET_FIELD = "Planned Scheduled Start Time"

// 获取字段实例(字段行为脚本中优先用getFieldByName)
def sourceField = getFieldByName(SOURCE_FIELD)
def targetField = getFieldByName(TARGET_FIELD)

// 获取源字段的日期值(返回类型为Date)
def sourceDate = sourceField.getValue()

if (sourceDate) {
    // 使用Jira官方的日期格式化工具,生成表单能识别的格式
    def dateFormatter = ComponentAccessor.getComponent(DateTimeFormatterFactory)
        .formatter()
        .forLoggedInUser() // 匹配当前用户的日期显示配置
        .withStyle(com.atlassian.jira.datetime.DateTimeStyle.DATE_TIME)
        .format(sourceDate)
    
    // 给目标字段赋值
    targetField.setFormValue(dateFormatter)
} else {
    // 源字段为空时,清空目标字段值
    targetField.setFormValue(null)
}

关键说明

  • 字段方向修正:明确区分源字段(要复制的字段)和目标字段(要赋值的字段),用getFieldByName直接获取字段实例是字段行为脚本中最可靠的方式。
  • 官方格式化工具:使用Jira自带的DateTimeFormatterFactory来生成符合当前用户配置的日期格式,避免手动拼接格式导致的兼容性问题。
  • 空值处理:增加了源字段为空时的逻辑,避免赋值空值时出现异常。

你提到硬编码日期能生效,正是因为硬编码的格式恰好符合Jira表单字段的要求,而之前脚本里的格式转换不正确,导致目标字段无法识别传入的值。

内容的提问来源于stack exchange,提问作者user1783675

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:59:07