Tinderbox Forum

Exporting sets to csv

Dear all,
after a while away, I’m returning to TBX. I’m struggling with something maybe simple: imagine I have 2 key attributes (sets):


$set1 has the following values “11;12;13”
$set2 has “21;22;”

I’d like to export them to CSV and have something like the following:


i.e. iterate through all values of each set and output them as mentioned (which is a simple CSV file).

I’m familiar with export code and envelope-letter approach; what I am having problems is the iteration process. Help much appreciated. Thank you!

If I’ve understood correctly…

We’ll assume your 2 KAs are $MyThingA and $MyThingB. Now template could write:


As there are only 2KAs I’ve not attempted an outer loop for those as I’m not sure how well that is supported (i.e. I don’t recall trying it). Left as an exercise for the reader is adding a header row, if needed, for the output.

Also, as you’re exporting a CSV file consider making the note’s $HTMLExportExtension value “.csv”

Thank you Paul and Mark (Mark: that’s it, I have a few more KA but thinking on exporting them in batches). Will try!

I’m trying the code but I get an empty CSV, I think there may be an error somewhere with the nested ( and {, trying to figure it out!

Looks like there’s a closing parentheses missing on the 1st and 3rd lines of Mark’s suggested code.

(myVal) should be (myVal))

Also, the 5th line should end with a closing parentheses — not a closing brace.

Thank you Paul, getting closer. I get an output now, but $MyString is not being correctly evaluated yet. Still trying :slight_smile:

Done! Not sure if it’s the most efficient way, but it works. Each action creates one string by iterating through all values of the selected key attribute, and then ^value(…)^exports that string.

Not sure if I could / should embed the ^value(…)^ code inside the ^action(…)^ code (or even if it’s possible).


Now I’ve corrected my earlier sample, it and the above do essentially the same thing. However, be aware that




Do slightly different things. It doesn’t affect this task but might affect subsequent tasks using $MyString. See here for why this should be

Thanks Mark for the clarification on key attribute’s inheritance – it’s important to know.
Tried your code, and it works, but for only one “MyThingA” and one “My ThingB”. Problem is that the ^action iterates all values, but ^value only outputs one because it’s outside the action loop (I think!).

For now it looks like Set.each(){} and List.each(){} don’t working inside `^action()^. Investigating…