Hello folks,
I have been trying to read a CSV via Groovy and spit out the values of columns into defined variables.
I used CsvReader to read the header and the records. When I run this code in my local groovy console, it gives me the desired output. But when I run it in JIRA Scriptrunner, it give me a null output. Not sure what I'm doing wrong.
Need some help please.
import java.io.FileNotFoundException
import java.io.IOException
import com.csvreader.CsvReader
CsvReader products = new CsvReader("D:/Program Files/Atlassian/JIRA/files/test.csv")
products.readHeaders()
while (products.readRecord())
{
String id = products.get("ID")
String project = products.get("Project")
String time_entry = products.get("Open_for_Time_Entry")
String clarity = products.get("Clarity_Project")
String action = products.get("Action")
String length = products.get("Length")
String type = products.get("Type")
String summary = products.get("Summary")
System.out.println(id + "\t" + project + "\t" + time_entry + "\t" + clarity)
}
products.close()
Ugh, I've run into this. The problem is that the groovy console doesn't support println. There are two ways to do it.
1) log output rather than printing it (just need to replace system.out.println with log.error)
2) Returning whatever it is you want to display (can't put it in a loop though, since a return outside a function will exit the script)
Bonus tip, Groovy doesn't require a variable to be declared as a type (it's like javascript in that aspect). Instead of declaring your variables as type String, you could declare them as type def. String works too, def is just also an option.
Let me know if that fixed it!
No problem! If that fixed it, could you go ahead and mark my response as the answer?
Thanks!
It's because you created a "discussion" instead of a "question".
Hi,
For Instance,
if def a and def b, i want to return both the values, it returns only a.
def a = "hello"
return a
def b = "hey"
return b
output:
hello
The "return" directive ends processing of the script as it feeds back a result.