我是速成脚本的新手,我做了几个简单的脚本,它们可以正常工作。我现在正在尝试其他的东西,这应该是简单的,但我似乎无法让它发挥作用。
我正在选择一堆工作项,读取一个自定义字段(NumberPack),我只想对它们进行求和。
我的脚本如下:
#set($PCR = $transaction.workItems.search.query("type:Paramrequest AND created:[20220101 TO 30000000] AND NumberPack.1:[00000000001 TO 02147483647]"))
#set($Total = 0)
#set($Pack = 0)
#set($x = 0)
#foreach($PCR in $PCR)
##set($Pack = $Pack.parseInt($PCR.fields.get("NumberPack")))
##set($x = $Total.add($Pack))
$PCR.fields.get("NumberPack").render ## this renders each NumberPack of each WI
#set($Pack = $PCR.fields.get("NumberPack"))
##set($x = $Total2.add($PCR.fields.get("NumberPack")))
##set($Total2 = $Total2 + 1)
#set($x = $math.add($x, 1))
#end
<br> Total: $Total
<br> $x
正如您所看到的,我尝试了一些方法,但是我一直得到总数为0。
知道我做错什么了吗?
谢谢
发布于 2022-11-08 17:22:01
如果你写
#set($Pack = $PCR.fields.get("NumberPack"))
Pack: $Pack <br>
输出内容类似于:
Pack: com.polarion.alm.server.api.model.fields.ProxyIntegerField@67807d51
在API (https://almdemo.polarion.com/polarion/sdk/doc/javadoc-rendering/com/polarion/alm/shared/api/model/fields/IntegerField.html)中,您会发现api.model.fields IntegerField有一个get()方法,它给出了值。虽然我同意这一点从未在文档中明确说明过。
你需要写
#set($Pack = $PCR.fields.get("NumberPack").get())
为了得到价值。下面的语句将给出累计的总和。
#set($Total = $math.add($Total, $PCR.fields.get("NumberPack").get()))
也要小心你的#foreach语句。在这种情况下,它似乎可以工作,但是给您的迭代器变量一个与您正在迭代的集合不同的名称是更安全的。例如:
#foreach($PCR in $PCRs)
https://stackoverflow.com/questions/74363493
复制相似问题