I have a scripted field that reads any attachments from a specific Link type and shows the file name of the linked attachment inside the scripted field.
The issue that I am having, is it reads all of the attachments including the source issue. It should only read the LINKED issues attachments.
I am getting an error when looking at the inline script - Cannot call java.util.List
(see attachement)
Setup -
JIRA 7.3.1
Adaptavist ScriptRunner for JIRA Version: 5.0.1
Issue Linking: New Issue Link Created
SD-DeliveryTeam-OutLink
Outward Description = SD-DeliveryTeam-OutLink
Inward Description = SD-DeliveryTeam-InLink
CODE -
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue def issueLinkManager = ComponentAccessor.getIssueLinkManager() def issues = [issue] as List<Issue> issues.addAll(issueLinkManager.getOutwardLinks(issue.id).findResults { if (it.issueLinkType.name == "SD-DeliveryTeam-Link") { return it.destinationObject } null }) issues.addAll(issueLinkManager.getInwardLinks(issue.id).findResults { if (it.issueLinkType.name == "SD-DeliveryTeam-Link") { return it.sourceObject } null }) issues.collect { issue -> issue.getAttachments().collect { att -> "<a href=\"" + "/secure/attachment/" + att.id + "/" + att.filename + "\">" + att.filename + "</a>" + "<br>" } }.flatten().join("")
Error:
Results Pulls Back to many Attachments:
Hello,
I think this will get you close:
import com.atlassian.jira.component.ComponentAccessor def issueLinkManager = ComponentAccessor.issueLinkManager def loggedUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def links = issueLinkManager.getLinkCollection(issue, loggedUser).allIssues def linkedAttachments = [] links.each{ if(it.issueType.name as String == "SD-DeliveryTeam-Link"){ linkedAttachments.addAll(it.attachments) } } (linkedAttachments).collect { att -> "<a href=\"" + "/secure/attachment/" + att.id + "/" + att.filename + "\">" + att.filename + "</a>" + "<br>" }.flatten().join("")
Hope this helps!
Jenna
Hmm, try this instead:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.attachment.Attachment def issueLinkManager = ComponentAccessor.issueLinkManager def loggedUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def links = issueLinkManager.getLinkCollection(issue, loggedUser).allIssues def linkedAttachments = [] links.each{ if(it.issueType.name as String == "SD-DeliveryTeam-InLink"){ linkedAttachments.addAll(it.attachments) } } (linkedAttachments).collect { att -> "<a href=\"" + "/secure/attachment/" + (att as Attachment).id + "/" + (att as Attachment).filename + "\">" + (att as Attachment).filename + "</a>" + "<br>" }.flatten().join("")
Let me know if it works!
Jenna
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Jenna,
Yes, that worked. Is there someway to allow a wildcard for the issuetype? Otherwise I would need to define multiple Strings for each issuetype.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Great! And sure;
For any issue type, just take out the if statement on the links.each portion:
links.each{ linkedAttachments.addAll(it.attachments) }
For a few different types you can define a list with them as so:
def myTypes = ["typeOne", "typeTwo"]
And then change the links.each statement to this:
links.each{ if(myTypes.contains(it.issueType.name as String)){ linkedAttachments.addAll(it.attachments) } }
Let me know if you have any other questions!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
How it works at JIRA Cloud? Is it possible to read anyhow attachment at Jira Cloud?
Thank you
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.