Grist

The Grist node reads, writes, and manages data in Grist spreadsheets. Use it for CRUD operations, batch updates, and spreadsheet automation.

The Grist node reads, writes, and manages data in Grist spreadsheets. Use it for CRUD operations, batch updates, and spreadsheet automation.

Overview

PropertyValue
Inputs1
Outputs1
Output$nodeLabel.records, $nodeLabel.record, $nodeLabel.success, $nodeLabel.id

Parameters

ParameterTypeDescription
credentialIdUUIDGrist credential from Credentials
gristOperationstringOperation: getRecord, getRecords, createRecord, createRecords, updateRecord, updateRecords, deleteRecord, listTables, listColumns
gristDocIdexpressionDocument ID (from Grist URL)
gristTableIdexpressionTable ID
gristRecordIdexpressionRecord ID (single-record ops)
gristRecordDataJSON stringField values for create/update. Use column IDs (e.g. User_Name), not labels.
gristRecordsDataJSON stringArray of records for batch ops
gristFilterJSON stringFilter: {"Column_ID": [values]}
gristSortstringSort: Column_ID or -Column_ID (descending)
gristLimitnumberMax records (default: 100)

Column IDs vs Labels

Use column IDs (underscores, e.g. User_Name) in gristRecordData and filters, not display labels. Use listColumns to discover column IDs.

Example – Get Records

{
  "type": "grist",
  "data": {
    "label": "getUsers",
    "credentialId": "grist-credential-uuid",
    "gristOperation": "getRecords",
    "gristDocId": "doc-id",
    "gristTableId": "Users",
    "gristFilter": "{\"User_Status\": [\"Active\"]}",
    "gristLimit": 50
  }
}

Example – Create Record

{
  "type": "grist",
  "data": {
    "label": "createUser",
    "credentialId": "grist-credential-uuid",
    "gristOperation": "createRecord",
    "gristDocId": "doc-id",
    "gristTableId": "Users",
    "gristRecordData": "{\"User_Name\": \"$userInput.body.name\", \"Email_Address\": \"$userInput.body.email\"}"
  }
}