GoRunner docs
Search or askSearch⌘K

CSV

Read CSV into rows, or write CSV from data.

2 actions · No connection needed

Do things in CSV

Add a CSV step and choose an Operation. Choose the row to see the fields of each.

Later steps read a step’s output by its name: see Use data from earlier steps.

What changed in version 2?

New steps use version 2.0.0. A step made before keeps 1.0.0 and works as it always has. The step’s panel shows its version at the top right. On an older step it reads v1.0.0 · 2.0.0 available: press it to choose the version.

In 2.0.0: A blank header cell becomes column_N, after its position. When rows arrive as JSON text, the columns keep the order they were written in. In version 1.0.0, a blank header is an empty key and columns are sorted.

Not in your list? See When an app isn’t here.

For developers

In the API, which calls apps pieces, CSV is pieceId: "csv" with actionId: "convert", set by operation. Get an app returns every field.

It computes from its inputs only (pure). See How versions and side effects work.

CSV › Convert CSV

Parse CSV text to rows, or generate CSV from an array of objects.

Parse (CSV → rows)

CSV Source · Optional

Where the CSV comes from: text you paste or map in, or a .csv file, uploaded here or produced by an earlier step (an HTTP download, an email attachment, an unzipped entry).

Options: Paste CSV text, Use a CSV file.

Default: Paste CSV text.

CSV File · Required

Upload a .csv, or switch to an expression to use a file from an earlier step (such as {{steps.download.result}}).

Shows when CSV Source is Use a CSV file.

CSV Text · Required

Paste the CSV content to read, such as name,age then a new line with Ann,30.

Shows when CSV Source isn’t Use a CSV file.

Delimiter · Optional

Field separator. Use \t for tab.

Default: ,.

First Row Is Header · Optional

Turn on if the first line names the columns; those names become each row's field names.

On by default.

Trim Spaces · Optional

Trim leading whitespace from each field.

Off by default.

Tolerate Bad Quotes · Optional

Allow bare or unbalanced double-quotes inside fields instead of erroring.

Off by default.

Skip Rows · Optional

Number of leading data rows to skip.

Default: 0.

Max Rows · Optional

Limit number of rows returned (0 = all).

Default: 0.

Generate (rows → CSV)

Rows · Required

Array of objects to serialize. You can also pass a reading step's whole result (such as {{steps.read_sheet.result}}), and its column order is then reused.

Column Order · Optional

Optional list of column names in the order you want them, such as ["name","score","city"] or {{steps.parse_csv.headers}}. Columns you don't list are added after the ones you do, so nothing is dropped.

Delimiter · Optional

Field separator. Use \t for tab.

Default: ,.

Flatten Nested Objects · Optional

Expand nested objects into dot-notation columns (such as address.city). When off, nested values are JSON-encoded into one cell.

On by default.

Quoting · Optional

Choose whether to wrap every value in quotes, or only values that need it.

Options: Minimal (only when needed), Quote all fields.

Default: Minimal (only when needed).

Include Header Row · Optional

Turn on to add a first line with the column names above the data rows.

On by default.

Also Output A File · Optional

Turn on to also emit a downloadable .csv file alongside the text, ready to attach to an email, upload, or zip. `result` still carries the text either way.

Off by default.

File Name · Optional

Name for the generated file.

Default: data.csv.

Shows when Also Output A File is on.

Protect Against Spreadsheet Formulas · Optional

Turn on when the file will be opened in Excel, Google Sheets or LibreOffice and holds text other people wrote (form answers, emails). A value starting with = + - or @ is then written with a leading apostrophe, so it shows as text instead of running as a formula. Numbers are left alone. Leave off when another program reads the CSV: to it, the apostrophe is part of the value.

Off by default.