Feature Request: Bulk Import for {randomize} (CSV/TXT datasets + one-click management)

Hi Text Blaze team,

Problem
I use {randomize} with 100+ options. Today, I have to add each item one by one—and when I no longer need them, I have to delete them individually and rebuild new sets. {randomize} is perfect for drawing from a large “database” of keywords/phrases, but adding/removing at scale is painful.

What I’m asking for
A way to bulk import and manage {randomize} options from a dataset, e.g.:

Import from CSV or TXT (one value per line or columns), or paste a list into a multiline field.

Dataset Manager to create, name, edit, reuse, and delete datasets (not just per-snippet lists).

Optional weights and tags/categories for finer control.

Export/Import datasets (CSV/TXT) for quick iteration and backup.

Minimal UX that would already solve it

In the {randomize} UI, add a “Bulk add / Import” button.

Accept CSV/TXT or Paste with line breaks.

Save as a named dataset that can be referenced by multiple snippets.

Why this matters

Massive time savings for users who rotate large lists.

Encourages reuse across snippets (single source of truth).

Makes {randomize} truly scale-friendly for long-term workflows.

Thanks for considering! This would make high-volume content work with Text Blaze far more efficient.

did you get a response to this? i need to import fro mcsv too

Hi,

You can do pretty much all of this with formulas:

Let's say I have a CSV with three columns and I want to show the user a random color. Or maybe I want a random color weighted by the weights.

Here's how you can do both those things.

Row ID, Color, Weight
1, Green, 1
2, Red, 3
3, Blue, 2

I can do something like this in a snippet:

CSV:
{formparagraph: name=csv; default=Row ID, Color, Weight
1, Green, 1
2, Red, 3
3, Blue, 2}

Convert the CSV to a Text Blaze lists:
{list_rows=slice(map(split(csv, "\n"), row -> map(split(row, ","), c -> trim(c))), 2)}
Rows as list: {=list_rows}
{colors=map(list_rows, row -> row[2])}
{weights=map(list_rows, row -> row[3])}
Colors: {=colors}
Weights: {=weights}

Select a random color: {=colors[ceil(random() * count(colors))]}
{random_from_weighted_list=(items, weights) -> block
var sum = sum(weights)
var r = ceil(random() * sum)

var cumulative = 0
var index = 0
for w in weights
index = index + 1
cumulative = cumulative + w
if r <= cumulative
return items[index]
endif
endfor
endblock
}

Select a random color weighted by the weights: {=random_from_weighted_list(colors, weights)}

The logic is a bit complex. I think it may make sense to add a fromCSV and a sample function to Text Blaze to make this easier.