CSV / TSV
Reading
This group opens a CSV or TSV file and loads it into the workflow as a document you can then modify and save. Each instruction reads a file from disk — with headers or without, in a given text encoding, skipping some leading rows, or with a non-standard quote character — and turns its rows into a table held in memory.
Prerequisite: none. Unlike most groups, these are entry-point instructions: they don’t need a document to exist beforehand — they create one by reading a file. A workflow that processes an existing spreadsheet-like file usually begins with one of these (instead of Create CSV/TSV file).
These concepts recur across the instructions in this group; they are explained here once.
-
File path (the source to read from): the CSV/TSV file the instruction opens. This is where the data comes from. If it is left empty, the instruction does nothing — no document is loaded.
-
⚠ Name and Path (the destination to save to) — leaving both empty overwrites the file you opened: where the loaded document will be written when you save it later. Leaving them empty saves over the file you opened, and filling them in is a save as: whatever you leave empty is taken from File path, so a Path on its own keeps the original file name and a Name on its own keeps its folder. The file name is inherited whole, extension included: opening
notes.logand leaving the destination empty writes overnotes.logitself. A File name you type is a name without extension, so that one takes the format’s own. -
CSV becomes .csv, TSV becomes .tsv: the Delimiter also decides the saved file’s extension. A tab delimiter saves the document as a
.tsvfile; any other delimiter saves it as.csv. -
Document: the Document key names the loaded document so later instructions can target it. If you leave it empty, the loaded file becomes the current document (the one instructions use by default).
-
Delimiter: the character that separates the values on each line — a comma (
,) for CSV, a tab for TSV. The default is a comma; if it resolves to empty, a comma is used. -
With or without headers: when a file has headers, its first row is read as the column names, and every following row becomes a record with those named fields. When it has no headers, every row (including the first) is loaded as a plain list of values. Some instructions have a Has headers switch; Read With Headers and Read Without Headers are fixed to one mode.
-
Dynamic values
@name: the text fields (File path, Delimiter, Name, Path, Document key, and the Encoding name / Quote character fields where present) accept a saved value: type@followed by its name and the engine substitutes the value at run time. -
Nothing is written to disk here. These instructions only load the file into the workflow; a later save instruction writes it out.
-
“From variable” fields: the numeric Rows to skip has a companion Rows to skip key field:
- If you leave it 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 of rows from that variable.
This is mainly for chaining instructions. If you only work with fixed values, you can ignore it.
- Read Skipping Leading Rows .csv
- Read With Custom Quote .csv
- Read With Encoding .csv
- Read With Headers .csv
- Read Without Headers .csv
Read Skipping Leading Rows .csv
Opens a CSV/TSV file after skipping a number of leading rows (title lines, notes, export credits, etc.), then reads the rest.
When to use it: when the real table doesn’t start on the first line — for example a file that begins with a couple of description or metadata rows before the actual data.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| File path | The CSV/TSV file to read from (accepts @name) |
(empty) | Yes |
| Rows to skip | How many rows to skip before reading begins | 1 |
No |
| Delimiter | Character separating the values (accepts @name) |
, |
No |
| Has headers | Yes = the first row after the skipped rows holds the column names; No = every remaining row is a list of values | Yes |
No |
| Rows to skip (from variable) | Reads the number of rows to skip from a saved value | (empty) | No |
| Has headers (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Name | File name the loaded document will be saved under (accepts @name) |
(empty) | No |
| Path | Folder the loaded document will be saved to (accepts @name) |
(empty) | No |
| Document key | Names the loaded document so later instructions can target it. Empty = current document (accepts @name) |
(empty) | No |
Important behavior: the first Rows to skip rows are discarded; then, if Has headers
is Yes, the next row is used as the column names and the remaining rows become records.
If File path is empty, nothing is loaded. A tab delimiter makes the saved file a .tsv.
Read With Custom Quote .csv
Opens a CSV/TSV file whose text values are wrapped in a non-standard quote character
(standard CSV uses the double quote ").
When to use it: for files that quote their fields with single quotes or another character instead of double quotes.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| File path | The CSV/TSV file to read from (accepts @name) |
(empty) | Yes |
| Quote character | The character that wraps text values (accepts @name) |
' |
No |
| Delimiter | Character separating the values (accepts @name) |
, |
No |
| Has headers | Yes = first row holds the column names; No = every row is a list of values | Yes |
No |
| Has headers (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Name | File name the loaded document will be saved under (accepts @name) |
(empty) | No |
| Path | Folder the loaded document will be saved to (accepts @name) |
(empty) | No |
| Document key | Names the loaded document so later instructions can target it. Empty = current document (accepts @name) |
(empty) | No |
Important behavior: only the first character of Quote character is used; if it
resolves to empty, the standard double quote " is used instead. If File path is empty,
nothing is loaded. A tab delimiter makes the saved file a .tsv.
Read With Encoding .csv
Opens a CSV/TSV file using a specific text encoding, so accented and special characters are read correctly.
When to use it: for files that are not saved in UTF-8 — for example a legacy file
in iso-8859-1 or windows-1252 where accents would otherwise come out garbled.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| File path | The CSV/TSV file to read from (accepts @name) |
(empty) | Yes |
| Encoding name | The character encoding to read with, e.g. utf-8, iso-8859-1, windows-1252 |
utf-8 |
No |
| Delimiter | Character separating the values (accepts @name) |
, |
No |
| Has headers | Yes = first row holds the column names; No = every row is a list of values | Yes |
No |
| Has headers (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Name | File name the loaded document will be saved under (accepts @name) |
(empty) | No |
| Path | Folder the loaded document will be saved to (accepts @name) |
(empty) | No |
| Document key | Names the loaded document so later instructions can target it. Empty = current document (accepts @name) |
(empty) | No |
Important behavior: if Encoding name is empty, utf-8 is used. The encoding name
must be one the system recognizes. If File path is empty, nothing is loaded. A tab
delimiter makes the saved file a .tsv.
Read With Headers .csv
Opens a CSV/TSV file and uses its first row as the column names, loading each following row as a record with those named fields.
When to use it: the normal way to open a table that has a header row — the columns keep their names, so later instructions can refer to them by name.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| File path | The CSV/TSV file to read from (accepts @name) |
(empty) | Yes |
| Delimiter | Character separating the values (accepts @name) |
, |
No |
| Name | File name the loaded document will be saved under (accepts @name) |
(empty) | No |
| Path | Folder the loaded document will be saved to (accepts @name) |
(empty) | No |
| Document key | Names the loaded document so later instructions can target it. Empty = current document (accepts @name) |
(empty) | No |
Important behavior: the first row becomes the column names; each remaining row becomes a
record. Blank lines are ignored. If File path is empty, nothing is loaded. A tab delimiter
makes the saved file a .tsv.
Read Without Headers .csv
Opens a CSV/TSV file that has no header row, loading every row — including the first — as a plain list of values.
When to use it: for files whose first line is already data, not column names.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| File path | The CSV/TSV file to read from (accepts @name) |
(empty) | Yes |
| Delimiter | Character separating the values (accepts @name) |
, |
No |
| Name | File name the loaded document will be saved under (accepts @name) |
(empty) | No |
| Path | Folder the loaded document will be saved to (accepts @name) |
(empty) | No |
| Document key | Names the loaded document so later instructions can target it. Empty = current document (accepts @name) |
(empty) | No |
Important behavior: no row is treated as column names — every row is loaded as a list of
values in order. Blank lines are ignored. If File path is empty, nothing is loaded. A tab
delimiter makes the saved file a .tsv.
This documentation is the help of the application, and it comes underCreative Commons Attribution 4.0.