从 Jira Cloud 为 Google 工作表解析状态字段中的天数
Parse Days in Status field from Jira Cloud for Google Sheets
我正在使用Jira Cloud for Sheets Adds on in order to get Days in Status
field from Jira, it seems to have the following syntax, from this post
<STATUS_ID>_*:*_<NUMBER_OF_TIMES_ISSUE_WAS_IN_THIS_STATUS>_*:*_<SECONDS>_*|
这是一个例子:
10060_*:*_1_*:*_1121033406_*|*_3_*:*_1_*:*_7409_*|*_10000_*:*_1_*:*_270003163_*|*_10088_*:*_1_*:*_2595005_*|*_10087_*:*_1_*:*_1126144_*|*_10001_*:*_1_*:*_0
我正在尝试提取问题是 In QA
状态的次数以及给定状态的持续时间。我正在处理解析此模式以获取此信息并使用 ARRAYFORMULA
return 它。 Days in Status
字段信息仅在问题完成时提供(处于Done
状态),否则不提供任何信息。如果问题处于 Done
状态,但未转换为给定状态,则不会在 Days in Status
字符串中提供此信息。
我正在尝试使用 REGEXEXTRACT
函数来匹配模式,例如:
=REGEXEXTRACT(C2, "(10060)_\*:\*_\d+_\*:\*_\d+_\*|")
它 return 是一个空值,我期望 10068
。我注意到当我使用 REGEXMATCH
函数时它 returns TRUE
:
=REGEXMATCH(C2, "(10060)_\*:\*_\d+_\*:\*_\d+_\*|")
所以语法不清楚。 Google作为正则表达式的参考参考如下documentation. It seems to be an issue with the vertical bar |
, per this documentation it is a special character that should be represented like this \v
, but this doesn't work. The REGEXMATCH
returns FALSE
. I am trying to use some online RegEx tester, that implements Google Sheets syntax (RE2), I found ReGo,不知是否有效
我正在尝试使用 SPLIT
这样的功能:
=query(SPLIT(C2, "_*:*_"), "SELECT Col1")
但是从 Days in Status
字段字符串中获取我需要的所有值似乎是一种更复杂的方法,但它很好地将所有值与之前的模式分开。在本例中,我得到了第一个状态 ID。 SPLIT
编辑的 return 列数会有所不同,因为它取决于问题为了达到 DONE
状态而转换的状态数。
考虑到我遇到的所有问题,这似乎是一项复杂的任务,但也许你们中的一些人以前处理过这个问题并且可能会提出一些想法。它需要正确解析信息,然后在从Status
列申请给定状态时使用ARRAYFORMULA
函数提取特定列的信息。
这是一个包含输入信息的 google 电子表格示例。我想为 Times In QA
(C
列)和 Duration in QA
(D
列)的以下列填充信息,信息在几秒钟内提供,我需要几天但这是一项次要任务)对于 In QA 状态,则同样适用于其余其他状态。我添加了用于将 Status ID
映射到我的 Status
的选项卡 Settings
,我需要使用查找函数来匹配 Jira Issues
选项卡中的 Status
列.我想要一个解决方案,不添加辅助列,可能需要一些脚本。
https://docs.google.com/spreadsheets/d/1ys6oiel1aJkQR9nfxWJsmEyd7XiNkVB-omcNL0ohckY/edit?usp=sharing
尝试:
=INDEX(IFERROR(1/(1/QUERY(1*IFNA(REGEXEXTRACT(C2:C, "10087.{5}(\d+).{5}(\d+)")),
"select Col1,Col2/86400 label Col2/86400''"))))
...所以在我们执行 REGEXEXTRACT
之后,一些行(无法从中提取)将输出为 #N/A
错误,因此我们将其包装到 IFNA
中以删除这些错误。然后我们将它乘以 *1
以将所有内容转换为数字(正则表达式有效且输出始终仅纯文本格式)。然后我们使用 QUERY
一次性将第 2 列转换为正确的秒数。此时每一行都有一些值,所以为了去掉我们不需要的行的零(比如第 2、3、5、8、9 等行)并保持输出数字,我们使用 IFERROR(1/(1/
换行.最后,我们使用 INDEX
或 ARRAYFORMULA
来处理我们的数组。
我正在使用Jira Cloud for Sheets Adds on in order to get Days in Status
field from Jira, it seems to have the following syntax, from this post
<STATUS_ID>_*:*_<NUMBER_OF_TIMES_ISSUE_WAS_IN_THIS_STATUS>_*:*_<SECONDS>_*|
这是一个例子:
10060_*:*_1_*:*_1121033406_*|*_3_*:*_1_*:*_7409_*|*_10000_*:*_1_*:*_270003163_*|*_10088_*:*_1_*:*_2595005_*|*_10087_*:*_1_*:*_1126144_*|*_10001_*:*_1_*:*_0
我正在尝试提取问题是 In QA
状态的次数以及给定状态的持续时间。我正在处理解析此模式以获取此信息并使用 ARRAYFORMULA
return 它。 Days in Status
字段信息仅在问题完成时提供(处于Done
状态),否则不提供任何信息。如果问题处于 Done
状态,但未转换为给定状态,则不会在 Days in Status
字符串中提供此信息。
我正在尝试使用 REGEXEXTRACT
函数来匹配模式,例如:
=REGEXEXTRACT(C2, "(10060)_\*:\*_\d+_\*:\*_\d+_\*|")
它 return 是一个空值,我期望 10068
。我注意到当我使用 REGEXMATCH
函数时它 returns TRUE
:
=REGEXMATCH(C2, "(10060)_\*:\*_\d+_\*:\*_\d+_\*|")
所以语法不清楚。 Google作为正则表达式的参考参考如下documentation. It seems to be an issue with the vertical bar |
, per this documentation it is a special character that should be represented like this \v
, but this doesn't work. The REGEXMATCH
returns FALSE
. I am trying to use some online RegEx tester, that implements Google Sheets syntax (RE2), I found ReGo,不知是否有效
我正在尝试使用 SPLIT
这样的功能:
=query(SPLIT(C2, "_*:*_"), "SELECT Col1")
但是从 Days in Status
字段字符串中获取我需要的所有值似乎是一种更复杂的方法,但它很好地将所有值与之前的模式分开。在本例中,我得到了第一个状态 ID。 SPLIT
编辑的 return 列数会有所不同,因为它取决于问题为了达到 DONE
状态而转换的状态数。
考虑到我遇到的所有问题,这似乎是一项复杂的任务,但也许你们中的一些人以前处理过这个问题并且可能会提出一些想法。它需要正确解析信息,然后在从Status
列申请给定状态时使用ARRAYFORMULA
函数提取特定列的信息。
这是一个包含输入信息的 google 电子表格示例。我想为 Times In QA
(C
列)和 Duration in QA
(D
列)的以下列填充信息,信息在几秒钟内提供,我需要几天但这是一项次要任务)对于 In QA 状态,则同样适用于其余其他状态。我添加了用于将 Status ID
映射到我的 Status
的选项卡 Settings
,我需要使用查找函数来匹配 Jira Issues
选项卡中的 Status
列.我想要一个解决方案,不添加辅助列,可能需要一些脚本。
https://docs.google.com/spreadsheets/d/1ys6oiel1aJkQR9nfxWJsmEyd7XiNkVB-omcNL0ohckY/edit?usp=sharing
尝试:
=INDEX(IFERROR(1/(1/QUERY(1*IFNA(REGEXEXTRACT(C2:C, "10087.{5}(\d+).{5}(\d+)")),
"select Col1,Col2/86400 label Col2/86400''"))))
...所以在我们执行 REGEXEXTRACT
之后,一些行(无法从中提取)将输出为 #N/A
错误,因此我们将其包装到 IFNA
中以删除这些错误。然后我们将它乘以 *1
以将所有内容转换为数字(正则表达式有效且输出始终仅纯文本格式)。然后我们使用 QUERY
一次性将第 2 列转换为正确的秒数。此时每一行都有一些值,所以为了去掉我们不需要的行的零(比如第 2、3、5、8、9 等行)并保持输出数字,我们使用 IFERROR(1/(1/
换行.最后,我们使用 INDEX
或 ARRAYFORMULA
来处理我们的数组。