An n8n community node for integrating with the Rows API.
- Development Setup
- Implementation Details
- Development Workflow
- Publishing
- Resources
- Example workflows
- Node.js 20+ and npm
- n8n installed globally:
npm install n8n -g - Git
-
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 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
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
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.
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)
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
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
Shared validation utilities:
- File type validation (png, jpg, jpeg, webp, pdf)
- File size validation (per file and total limits)
- Maximum number of files validation
Defines the credential schema for Rows API key authentication.
- Edit the TypeScript files in
nodes/orcredentials/ - Run linter:
npm run lint # or auto-fix issues: npm run lintfix - Rebuild:
npm run build
-
Start n8n in development mode:
n8n start
-
Access n8n at
http://localhost:5678 -
Create a workflow with the Rows node
Enable n8n debug logging:
export N8N_LOG_LEVEL=debug
n8n startCheck logs for API request/response details.
- Update version in
package.json - Build:
npm run build - Publish to npm:
npm publish - (Optional) Submit for n8n cloud verification: docs
Read/Write files (file1) ──┐
├──> Merge ──> Rows (Import Vision Data)
Read/Write files (file2) ──┘