Description
n8n-nodes-rows
An n8n community node for integrating with the Rows API.
- Development Setup
- Implementation Details
- Development Workflow
- Publishing
- Resources
- Example workflows
Development Setup
Prerequisites
- Node.js 20+ and npm
- n8n installed globally:
npm install n8n -g - Git
Installation
-
Clone the repository:
git clone <your-repo-url> cd n8n-nodes-rows -
Install dependencies:
npm install -
Build the node:
npm run build -
Link for local development:
npm link -
Link in your n8n installation:
cd ~/.n8n/custom npm link @rowshq/n8n-nodes-rows
In case you don't have the folder custom locally, you can create it with mkdir custom
- Restart n8n to load the node
Project Structure
n8n-nodes-rows/
├── credentials/
│ └── RowsApi.credentials.ts # API credential configuration
├── nodes/
│ └── Rows/
│ ├── operations/ # Operation-specific implementations
│ │ ├── appendData.ts # Append Data operation
│ │ ├── overwriteData.ts # Overwrite Data operation
│ │ └── importVisionData.ts # Vision Import operation
│ ├── utils/ # Shared utilities
│ │ └── validation.ts # File validation functions
│ ├── Rows.node.ts # Main node implementation
│ ├── Rows.node.json # Node codex metadata
│ └── rows.svg # Node icon
├── package.json
└── tsconfig.json
Implementation Details
Node Architecture
The node implements three operations:
- Append Data: Uses the
/values/{range}:appendendpoint - Overwrite Data: Uses the
/cells/{range}endpoint - Import Vision Data: Uses the
/vision/importendpoint for extracting data from image files
All operations are extracted into standalone async functions in the operations/ directory:
appendDataToTable: Appends data to a tableoverwriteDataInTable: Overwrites data in a tableimportVisionData: Processes a single item (one file per request)importVisionDataFromAllItems: Processes all items (multiple files in one request)
Shared utilities (file validation, constants) are in the utils/ directory.
API Integration
The node uses:
httpRequestWithAuthenticationfor authenticated API calls- Dynamic option loading for spreadsheets, tables, and folders
- Bearer token authentication via credentials
- Multipart form data for file uploads (vision import)
Key Files
Rows.node.ts
Main node implementation with:
- Node description and properties
loadOptionsmethods for dynamic dropdowns (spreadsheets, tables, folders)executemethod for processing workflow items- Orchestrates calls to operation functions
operations/
Operation-specific implementations:
appendData.ts: Append data to spreadsheet tablesoverwriteData.ts: Overwrite data in spreadsheet tablesimportVisionData.ts: Vision import with file handling and multipart form data
utils/validation.ts
Shared validation utilities:
- File type validation (png, jpg, jpeg, webp, pdf)
- File size validation (per file and total limits)
- Maximum number of files validation
RowsApi.credentials.ts
Defines the credential schema for Rows API key authentication.
Development Workflow
Making Changes
- Edit the TypeScript files in
nodes/orcredentials/ - Run linter:
npm run lint # or auto-fix issues: npm run lintfix - Rebuild:
npm run build
Testing Locally
-
Start n8n in development mode:
n8n start -
Access n8n at
http://localhost:5678 -
Create a workflow with the Rows node
Debugging
Enable n8n debug logging:
export N8N_LOG_LEVEL=debug
n8n start
Check logs for API request/response details.
Publishing
- Update version in
package.json - Build:
npm run build - Publish to npm:
npm publish - (Optional) Submit for n8n cloud verification: docs
Resources
Example workflows
Vision
Read/Write files (file1) ──┐
├──> Merge ──> Rows (Import Vision Data)
Read/Write files (file2) ──┘