CSV / TSV
Editing values
This group cleans and reshapes the values inside a column of a loaded CSV/TSV table: search and replace text, fill in blanks, reformat dates, change letter case, trim stray spaces, convert a column to another data type, run a math operation on numbers, or mask sensitive data. It also holds the one instruction that makes the table grow — Add Row — because every other instruction of the CSV/TSV family reshapes rows that are already there. Every instruction here changes the table in place and can save the number of cells it touched.
Prerequisite: a CSV/TSV document must already be loaded — created with Create CSV/TSV file or opened with one of the Reading instructions. These instructions edit an existing document; they do not open files themselves.
These concepts recur across the instructions in this group; they are explained here once.
-
Document: the Document key points to the loaded CSV/TSV these instructions edit. If you leave it empty, the current document is used (the one instructions work on by default). If the key isn’t loaded, the instruction does nothing.
-
These instructions change the document. Unlike the read-only Inspection group, everything here rewrites cell values in the loaded table. The change stays with the document and is written out when it is saved.
-
They work on named columns. Every instruction targets a column by name, so the table must have been loaded with headers. On a table loaded without headers (rows of plain values with no column names) these instructions find no named columns and do nothing.
-
Column not found = nothing changes. If the Column name you give isn’t in the table, the instruction leaves every row untouched (and the saved count is
0). -
Empty Column name = every column. In the instructions that work on any kind of text — Trim Whitespace, Normalize Text Case, Replace Text In Column, Mask Sensitive Values and Fill Empty Cells — leaving Column name empty applies the instruction to all the columns of the table, and the saved count adds up every cell changed. The three instructions that depend on the column’s data type — Apply Math Operation (numbers), Change Date Format (dates) and Convert Column Type — still need a column: with Column name empty they do nothing, because the operation only makes sense on a column you chose deliberately.
-
Save a result (
saveCountKey): most instructions can save how many cells they changed under the name you type in Save count key, for later instructions to use with@name. Leave it empty and the count is simply not saved. -
Dynamic values
@name: the text fields (Column name, Search text, Fixed value, and so on) accept a saved value — type@followed by its name and the engine substitutes it at run time. -
“From variable” fields: Apply Math Operation has two number fields — Operand and Decimal places — each with a companion …key field. A number field can’t take
@name, so this is its equivalent:- If you leave the …key field empty, the number typed in the normal field is used.
- If you fill it in with the name of a saved value, the engine ignores the normal field and reads the number from that variable.
This is mainly for chaining instructions — e.g. compute a rate earlier and feed it in as the operand. If you only work with fixed values, you can ignore it.
- Add Row .csv
- Apply Math Operation .csv
- Change Date Format .csv
- Convert Column Type .csv
- Fill Empty Cells .csv
- Mask Sensitive Values .csv
- Normalize Text Case .csv
- Replace Text In Column .csv
- Trim Whitespace .csv
- Write Cell Value .csv
Add Row .csv
Adds a row at the end of the loaded file, with its values in column order.
When to use it: to build a file from the workflow — inside a loop, one row per turn — or to append a single line to a file you opened. It is the only instruction that makes a CSV grow: every other one reshapes the rows the file already has.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV the row is added to. Empty = current document (accepts @name) |
(empty) | No |
| Values | The cells of the new row, in column order, separated by Value separator. Supports @name |
(empty) | Yes |
| Value separator | What separates one value from the next in the field above | | |
No |
| Column names | Comma-separated column names, read only when the file has no rows yet. Supports @name |
(empty) | No |
| Save row count key | Saves how many rows the file has afterwards | (empty) | No |
Important behavior: the columns come from the file, not from this instruction: if it already has rows, the new one takes their columns and Column names is ignored. Only on a file with no rows are they taken from Column names — and failing that from the ones Create CSV/TSV file declared; with no columns anywhere the row is not added and the workflow says so. Values you leave out keep their column empty, and values with no column to go in are left out and reported. The separator is a field of its own, and not the file’s comma, precisely so a value can contain a comma; nothing is trimmed, so a space around the separator is written as part of the value. An empty Values adds nothing. On a table loaded without headers the values go in by position — this is the one instruction of the group that works there.
Apply Math Operation .csv
Runs a math operation on the numeric values of a column — multiply, add, subtract, divide, round, or apply a percentage change — and rewrites each cell with the result.
When to use it: to recalculate a numeric column in bulk — convert units, apply a discount or markup, scale figures, or round them to a set number of decimals.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column whose numbers are operated on (accepts @name) |
(empty) | Yes |
| Operation | multiply, add, subtract, divide, round, or percent |
multiply |
No |
| Operand | The number applied by the operation (ignored by round) |
1 |
No |
| Decimal places | Decimals the result is rounded to | 2 |
No |
| Operand (from variable) | (from variable) reads the operand from a saved value instead of the field above | (empty) | No |
| Decimal places (from variable) | (from variable) reads the decimals from a saved value instead of the field above | (empty) | No |
| Save count key | Saves how many cells were changed | (empty) | No |
Important behavior: if Column name is empty (or the document isn’t loaded) nothing happens —
this instruction always needs a column, because a math operation only makes sense on numbers you chose.
Cells that aren’t numbers are skipped. percent grows the value by Operand percent (e.g. 10
adds 10%); divide by 0 leaves the value unchanged; round ignores Operand and just rounds.
Every result is rounded to Decimal places.
Change Date Format .csv
Reads the dates in a column written in one format and rewrites them in another.
When to use it: to standardize a date column — e.g. turn 31/12/2026 into 2026-12-31 — so
the whole table uses one consistent date style.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column whose dates are reformatted (accepts @name) |
(empty) | Yes |
| Input format | The format the dates are currently written in (accepts @name) |
yyyy-MM-dd |
No |
| Output format | The format to rewrite them in (accepts @name) |
yyyy-MM-dd |
No |
| Save count key | Saves how many dates were converted | (empty) | No |
Important behavior: if Column name is empty (or the document isn’t loaded) nothing happens —
this instruction always needs a column, since only you know which one holds dates. Set Input format to
match how the dates are written in your file: both formats default to yyyy-MM-dd, so out of the
box the instruction expects ISO dates (and rewriting ISO as ISO changes nothing). To standardize dates
written as 31/12/2026, type dd/MM/yyyy in Input format.
Blank cells are skipped, and so is any value that doesn’t exactly match Input format — it is
left as-is and not counted. The format uses the usual letters: dd day, MM month, yyyy year,
HH hour, mm minute.
Convert Column Type .csv
Converts every value in a column to a chosen data type — text, whole number, decimal, or date.
When to use it: to clean up a column so its values share one type before filtering, sorting, or exporting — e.g. force a column to whole numbers, or normalize mixed date text.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column whose values are converted (accepts @name) |
(empty) | Yes |
| Target type | text, integer, decimal, or date |
text |
No |
| Date format | The format used when Target type is date (accepts @name) |
yyyy-MM-dd |
No |
| Save count key | Saves how many values were converted | (empty) | No |
Important behavior: if Column name is empty (or the document isn’t loaded) nothing happens —
this instruction always needs a column, because the target type is chosen per column.
Blank cells are skipped. integer rounds a decimal to the nearest whole number; decimal keeps
the number as-is; date parses the value and rewrites it using Date format; text leaves the
value unchanged. Any value that can’t be parsed as the chosen type is kept as-is and not
counted.
Fill Empty Cells .csv
Fills the empty cells of a column — with a fixed value, the value from the row above, or the column’s average.
When to use it: to remove gaps in a column before analysis or export — e.g. put 0 or
Unknown where a value is missing, carry the previous value down, or fill blanks with the mean.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column whose empty cells are filled. Empty = every column (accepts @name) |
(empty) | No |
| Fill mode | fixed, previous (value above), or mean (column average) |
fixed |
No |
| Fixed value | The value used when Fill mode is fixed (accepts @name) |
(empty) | No |
| Save count key | Saves how many cells were filled | (empty) | No |
Important behavior: if the document isn’t loaded nothing happens; if Column name is empty
every column is filled. A cell counts as empty when it is missing or contains only spaces.
previous uses the last non-empty value seen above (or Fixed value if none has appeared yet);
mean uses the average of the column’s numeric values (or 0 if there are none). Both are worked
out per column, so filling every column at once still uses each column’s own previous value and
its own average.
Mask Sensitive Values .csv
Hides or anonymizes sensitive data in a column — emails, phone numbers, IDs, or any value — while keeping the table’s shape.
When to use it: to share or export a table without exposing personal data — e.g. turn
jane.doe@acme.com into j***@***.com or a phone number into ********45.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column whose values are masked. Empty = every column (accepts @name) |
(empty) | No |
| Data type | email, phone, id, or custom — how the value is masked |
email |
No |
| Custom mask | The text that replaces the whole cell when Data type is custom (accepts @name) |
*** |
No |
| Save count key | Saves how many cells were masked | (empty) | No |
Important behavior: if the document isn’t loaded nothing happens; if Column name is empty
every column is masked — handy to sweep a whole table for emails or phone numbers. Note that
custom replaces whole cells, so with an empty Column name it would blank out the entire table.
Blank cells are skipped. email keeps the first letter and the domain ending (j***@***.com);
phone keeps only the last two digits; id keeps the first and last character; custom replaces
the entire cell with Custom mask.
What this instruction is not: the email, phone and id modes recognize values by their
shape (text patterns), not by knowing what the data means. A value written in an unexpected
way is left untouched, and a value that merely looks like an ID may be masked when it isn’t
one. Treat it as a convenience for tidying up data you already understand — not as a
guarantee of anonymization. If you must publish data where a leak matters, check the result, or
use custom (which blanks the whole cell) or Remove Columns to drop the column entirely.
Normalize Text Case .csv
Changes the letter case of the text in a column — all uppercase, all lowercase, or Title Case.
When to use it: to make a text column consistent — e.g. tidy up names into Title Case, or
force codes to uppercase.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column whose text is recased. Empty = every column (accepts @name) |
(empty) | No |
| Case mode | upper, lower, or title |
title |
No |
| Save count key | Saves how many cells were changed | (empty) | No |
Important behavior: if the document isn’t loaded nothing happens; if Column name is empty
every column is recased. Empty cells are skipped. title capitalizes the first letter of each
word; only cells whose text actually changes are counted.
Replace Text In Column .csv
Replaces every occurrence of a piece of text with another, inside one column.
When to use it: for a targeted find-and-replace in a single column — fix a recurring typo, swap a code for a label, or clean up a stray character.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column to search and replace in. Empty = every column (accepts @name) |
(empty) | No |
| Search text | The text to look for (accepts @name) |
(empty) | Yes |
| Replacement text | The text to put in its place (accepts @name) |
(empty) | No |
| Case sensitive | If yes, Cat and cat are treated as different |
no |
No |
| Case sensitive (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Save count key | Saves how many cells were changed | (empty) | No |
Important behavior: if Search text is empty (or the document isn’t loaded) nothing happens; if Column name is empty the replacement runs on every column — a whole-table find and replace. Every occurrence within a cell is replaced. Matching ignores case by default; turn Case sensitive on to match exactly. Only cells that actually change are counted. Leave Replacement text empty to delete the matched text.
Trim Whitespace .csv
Removes leading and trailing spaces from a column’s values — or from every column at once.
When to use it: to clean up stray spaces that sneak in around values (e.g. from copy-paste or exports) and cause mismatches when comparing, filtering, or joining.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Column name | The column to trim. Leave empty to trim every column (accepts @name) |
(empty) | No |
| Document key | The loaded CSV/TSV to edit. Empty = current document (accepts @name) |
(empty) | No |
| Save count key | Saves how many cells were trimmed | (empty) | No |
Important behavior: if the document isn’t loaded, nothing happens. Only spaces at the start and end of a value are removed — spaces inside the text are kept. Leaving Column name empty trims all columns. Only cells that actually change are counted.
Write Cell Value .csv
Writes one cell: the row by its position, the column by its name.
When to use it: to correct one datum, or to write a result the workflow calculated into a specific row.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document | Document the instruction applies to | (current document) | No |
| Row number | Row to write, counting from 1. -1 = the last row |
1 |
No |
| Column name | Name of the column. Supports @name |
(empty) | Yes |
| Value | New value of the cell. Supports @name |
(empty) | No |
| Row number (from variable) | Reads the row from a saved value | (empty) | No |
Important behavior: an empty value empties the cell, as it does in a spreadsheet. A column the file has not got is not created — the other rows would not have it; to add one use Add Fixed Value Column. A row that does not exist does nothing — to make one, use Add Row.
This documentation is the help of the application, and it comes underCreative Commons Attribution 4.0.