n8n-nodes-json-crud 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,708 @@
1
+ # n8n-nodes-json-crud
2
+
3
+ 這是一個 n8n 社群節點,讓您輕鬆對 JSON 資料執行 CRUD(新增、讀取、更新、刪除)操作。
4
+
5
+ **特別適合處理從 Excel 轉換而來的 JSON 資料!**
6
+
7
+ ## 🎯 為什麼需要這個節點?
8
+
9
+ 當您使用 n8n 處理 Excel 檔案時,通常需要:
10
+ 1. 使用 `Extract from File` 將 Excel 轉為 JSON
11
+ 2. 組合多個節點(Filter、Edit Fields、Code 等)來處理資料
12
+ 3. 使用 `Convert to File` 轉回 Excel
13
+
14
+ **這個節點簡化了第 2 步**,將多個操作整合在一個節點中,對初學者更友好!
15
+
16
+ ## ✨ 功能特色
17
+
18
+ ### 📝 CREATE(新增)
19
+ - 新增單筆或多筆資料
20
+ - 選擇加在最前或最後
21
+ - 支援 JSON 格式輸入
22
+
23
+ ### 🔍 READ(讀取/篩選)
24
+ - **Filter(篩選)**:12 種比較運算子,支援 AND/OR 邏輯
25
+ - **Sort(排序)**:升序或降序排序
26
+ - **Search(搜尋)**:全文搜尋或指定欄位搜尋
27
+ - **Limit(限制)**:分頁功能,支援 offset
28
+ - **By Cell Position(儲存格讀取)**:類似 Excel 的精確讀取
29
+ - 支援單一列:`0`(第 1 列)
30
+ - 支援範圍:`0-5`(第 1-6 列)
31
+ - 支援多個列:`0,2,4`(第 1,3,5 列)
32
+ - 支援組合:`0-2,5,7-9`(第 1-3,6,8-10 列)
33
+ - 可選擇特定欄位或讀取全部欄位
34
+
35
+ ### ✏️ UPDATE(更新)
36
+ - **條件更新**:根據條件批量更新多個欄位
37
+ - **儲存格更新**:類似 Excel 的 A1/B2 定位方式更新指定儲存格
38
+ - 支援單一列:`0`(第 1 列)
39
+ - 支援範圍:`0-5`(第 1-6 列)
40
+ - 支援多個列:`0,2,4`(第 1,3,5 列)
41
+ - 支援組合:`0-2,5,7-9`(第 1-3,6,8-10 列)
42
+ - 支援表達式計算
43
+
44
+ ### 🗑️ DELETE(刪除)
45
+ - 根據條件刪除資料
46
+ - 支援多條件組合
47
+ - 保留不符合條件的資料
48
+
49
+ ### 🔄 REMOVE DUPLICATES(去重)
50
+ - 根據指定欄位去重
51
+ - 或比較所有欄位去重
52
+
53
+ ### 📊 STATISTICS(統計)
54
+ - 計算 count、sum、avg、min、max
55
+ - 支援分組統計
56
+ - 快速產生報表資料
57
+
58
+ ## 📦 安裝
59
+
60
+ ### 方法 1:從 npm 安裝(發布後)
61
+ ```bash
62
+ npm install n8n-nodes-json-crud
63
+ ```
64
+
65
+ ### 方法 2:從 GitHub 安裝
66
+ ```bash
67
+ cd ~/.n8n/nodes
68
+ npm install git+https://github.com/fchart/n8n-nodes-json-crud.git
69
+ ```
70
+
71
+ ### 方法 3:手動安裝(開發用)
72
+ ```bash
73
+ # 1. Clone 專案
74
+ git clone https://github.com/fchart/n8n-nodes-json-crud.git
75
+ cd n8n-nodes-json-crud
76
+
77
+ # 2. 安裝依賴
78
+ npm install
79
+
80
+ # 3. 編譯
81
+ npm run build
82
+
83
+ # 4. 連結到 n8n
84
+ npm link
85
+ cd ~/.n8n
86
+ npm link n8n-nodes-json-crud
87
+
88
+ # 5. 重啟 n8n
89
+ ```
90
+
91
+ ## 🚀 使用範例
92
+
93
+ ### 範例 1:處理員工 Excel 檔案
94
+
95
+ ```
96
+ ┌─────────────────┐
97
+ │ Read Binary File│ 讀取 employees.xlsx
98
+ └────────┬────────┘
99
+
100
+
101
+ ┌─────────────────┐
102
+ │ Extract from │ 轉換為 JSON
103
+ │ File (XLSX) │
104
+ └────────┬────────┘
105
+
106
+
107
+ ┌─────────────────┐
108
+ │ JSON CRUD │ 操作:Filter
109
+ │ 篩選技術部 │ 條件:部門 = "技術部"
110
+ └────────┬────────┘
111
+
112
+
113
+ ┌─────────────────┐
114
+ │ JSON CRUD │ 操作:Update
115
+ │ 加薪 10% │ 更新:薪資 = 薪資 * 1.1
116
+ └────────┬────────┘
117
+
118
+
119
+ ┌─────────────────┐
120
+ │ JSON CRUD │ 操作:Sort
121
+ │ 薪資排序 │ 欄位:薪資(降序)
122
+ └────────┬────────┘
123
+
124
+
125
+ ┌─────────────────┐
126
+ │ Convert to File │ 轉回 Excel
127
+ └────────┬────────┘
128
+
129
+
130
+ ┌─────────────────┐
131
+ │ Write Binary │ 儲存檔案
132
+ │ File │
133
+ └─────────────────┘
134
+ ```
135
+
136
+ ### 範例 2:新增資料
137
+
138
+ **操作設定:**
139
+ - Operation: `Create`
140
+ - Position: `Append`
141
+ - Data to Add:
142
+ ```json
143
+ {
144
+ "員工編號": "E0099",
145
+ "姓名": "王小明",
146
+ "部門": "技術部",
147
+ "薪資": 50000
148
+ }
149
+ ```
150
+
151
+ 或批量新增:
152
+ ```json
153
+ [
154
+ {"姓名": "張三", "部門": "業務部", "薪資": 45000},
155
+ {"姓名": "李四", "部門": "行政部", "薪資": 40000}
156
+ ]
157
+ ```
158
+
159
+ ### 範例 3:篩選資料
160
+
161
+ **操作設定:**
162
+ - Operation: `Read`
163
+ - Read Mode: `Filter`
164
+ - Conditions:
165
+ - 條件 1: 部門 `equals` "技術部"
166
+ - 條件 2: 薪資 `greater than` 45000
167
+ - Condition Logic: `AND`
168
+
169
+ 結果:只返回技術部且薪資大於 45000 的員工
170
+
171
+ ### 範例 3-1:⭐ 儲存格讀取(類似 Excel)
172
+
173
+ #### 情境 1:讀取單一列的所有欄位
174
+ **操作設定:**
175
+ - Operation: `Read`
176
+ - Read Mode: `By Cell Position`
177
+ - Row Index: `0`(第 1 列)
178
+ - Field Names: 留空(讀取所有欄位)
179
+
180
+ 結果:只返回第 1 列的完整資料
181
+
182
+ #### 情境 2:讀取範圍列的特定欄位
183
+ **操作設定:**
184
+ - Operation: `Read`
185
+ - Read Mode: `By Cell Position`
186
+ - Row Index: `0-4`(第 1-5 列)
187
+ - Field Names: `姓名,薪資`
188
+
189
+ 結果:返回第 1-5 列,但每列只包含姓名和薪資兩個欄位
190
+
191
+ #### 情境 3:讀取多個不連續列
192
+ **操作設定:**
193
+ - Operation: `Read`
194
+ - Read Mode: `By Cell Position`
195
+ - Row Index: `0,5,10`(第 1,6,11 列)
196
+ - Field Names: 留空
197
+
198
+ 結果:返回第 1,6,11 列的完整資料
199
+
200
+ #### 情境 4:提取表頭和資料範圍
201
+ **操作設定:**
202
+ - Operation: `Read`
203
+ - Read Mode: `By Cell Position`
204
+ - Row Index: `0-2,10-12`(第 1-3 和 11-13 列)
205
+ - Field Names: `姓名,部門,薪資`
206
+
207
+ 結果:返回第 1-3 列和第 11-13 列,只包含指定的三個欄位
208
+
209
+ ### 範例 4:條件更新資料
210
+
211
+ **操作設定:**
212
+ - Operation: `Update`
213
+ - Update Mode: `By Condition`
214
+ - Update Conditions:
215
+ - 部門 `equals` "技術部"
216
+ - Fields to Update:
217
+ - 欄位:薪資,值:`{{ $json.薪資 * 1.15 }}`
218
+ - 欄位:更新日期,值:`{{ $now }}`
219
+
220
+ 結果:技術部員工薪資增加 15%
221
+
222
+ ### 範例 5:⭐ 儲存格更新(類似 Excel)
223
+
224
+ #### 情境 1:更新單一儲存格
225
+ **操作設定:**
226
+ - Operation: `Update`
227
+ - Update Mode: `By Cell Position`
228
+ - Row Index: `0`(第 1 列,0-based)
229
+ - Field Name: `薪資`
230
+ - New Value: `60000`
231
+
232
+ 結果:只更新第 1 列的薪資欄位為 60000
233
+
234
+ #### 情境 2:更新範圍儲存格
235
+ **操作設定:**
236
+ - Operation: `Update`
237
+ - Update Mode: `By Cell Position`
238
+ - Row Index: `0-4`(第 1-5 列)
239
+ - Field Name: `部門`
240
+ - New Value: `技術部`
241
+
242
+ 結果:第 1-5 列的部門欄位全部更新為「技術部」
243
+
244
+ #### 情境 3:更新多個不連續儲存格
245
+ **操作設定:**
246
+ - Operation: `Update`
247
+ - Update Mode: `By Cell Position`
248
+ - Row Index: `0,2,4,6`(第 1,3,5,7 列)
249
+ - Field Name: `狀態`
250
+ - New Value: `已審核`
251
+
252
+ 結果:只更新第 1,3,5,7 列的狀態欄位
253
+
254
+ #### 情境 4:組合範圍和單一儲存格
255
+ **操作設定:**
256
+ - Operation: `Update`
257
+ - Update Mode: `By Cell Position`
258
+ - Row Index: `0-2,5,8-10`(第 1-3,6,9-11 列)
259
+ - Field Name: `標記`
260
+ - New Value: `重要`
261
+
262
+ 結果:更新第 1-3,6,9-11 列的標記欄位
263
+
264
+ #### 情境 5:使用表達式更新特定列
265
+ **操作設定:**
266
+ - Operation: `Update`
267
+ - Update Mode: `By Cell Position`
268
+ - Row Index: `0`
269
+ - Field Name: `薪資`
270
+ - New Value: `{{ $json.薪資 * 1.2 }}`
271
+
272
+ 結果:第 1 列的薪資增加 20%
273
+
274
+ ### 範例 6:刪除資料
275
+
276
+ **操作設定:**
277
+ - Operation: `Delete`
278
+ - Delete Conditions:
279
+ - 狀態 `equals` "離職"
280
+
281
+ 結果:移除所有離職員工的資料
282
+
283
+ ### 範例 7:搜尋功能
284
+
285
+ **操作設定:**
286
+ - Operation: `Read`
287
+ - Read Mode: `Search`
288
+ - Search Field: 留空(搜尋所有欄位)
289
+ - Search Value: "工程師"
290
+ - Case Sensitive: false
291
+
292
+ 結果:返回任何欄位包含「工程師」的資料
293
+
294
+ ### 範例 8:分組統計
295
+
296
+ **操作設定:**
297
+ - Operation: `Statistics`
298
+ - Statistics Field: `薪資`
299
+ - Group By Field: `部門`
300
+
301
+ 結果:
302
+ ```json
303
+ [
304
+ {
305
+ "group": "技術部",
306
+ "count": 15,
307
+ "sum": 750000,
308
+ "avg": 50000,
309
+ "min": 40000,
310
+ "max": 70000
311
+ },
312
+ {
313
+ "group": "業務部",
314
+ "count": 10,
315
+ "sum": 450000,
316
+ "avg": 45000,
317
+ "min": 38000,
318
+ "max": 55000
319
+ }
320
+ ]
321
+ ```
322
+
323
+ ## 📚 詳細功能說明
324
+
325
+ ### Read(讀取)模式說明
326
+
327
+ #### 模式 1:Filter(篩選)
328
+ - 根據條件篩選記錄
329
+ - 支援多種運算子和邏輯組合
330
+ - 適合批量過濾符合特定條件的資料
331
+
332
+ #### 模式 2:Sort(排序)
333
+ - 根據指定欄位排序
334
+ - 支援升序和降序
335
+ - 適合產生排名或有序列表
336
+
337
+ #### 模式 3:Search(搜尋)
338
+ - 全文搜尋或指定欄位搜尋
339
+ - 支援大小寫敏感選項
340
+ - 適合關鍵字查詢
341
+
342
+ #### 模式 4:Limit(限制)
343
+ - 分頁功能,支援 offset
344
+ - 適合處理大量資料時的分批讀取
345
+
346
+ #### 模式 5:By Cell Position(儲存格讀取)
347
+ - 類似 Excel 的精確定位讀取
348
+ - 使用列索引(0-based)+ 可選欄位名稱
349
+ - 支援靈活的範圍選擇
350
+
351
+ **列索引格式:**
352
+ | 格式 | 說明 | 範例 |
353
+ |------|------|------|
354
+ | 單一列 | `0` | 只讀取第 1 列 |
355
+ | 範圍 | `0-5` | 讀取第 1-6 列 |
356
+ | 多個列 | `0,2,4` | 讀取第 1,3,5 列 |
357
+ | 組合 | `0-2,5,7-9` | 讀取第 1-3,6,8-10 列 |
358
+
359
+ **欄位選擇:**
360
+ - 留空:讀取所有欄位
361
+ - 指定:只讀取指定欄位(逗號分隔),如 `姓名,薪資,部門`
362
+
363
+ **使用情境:**
364
+ - 提取 Excel 的表頭列
365
+ - 讀取特定範圍的資料進行分析
366
+ - 抽取不連續列的資料
367
+ - 只提取需要的欄位減少資料量
368
+
369
+ ### Filter(篩選)支援的運算子
370
+
371
+ | 運算子 | 說明 | 範例 |
372
+ |--------|------|------|
373
+ | Equals | 等於 | 部門 = "技術部" |
374
+ | Not Equals | 不等於 | 狀態 ≠ "離職" |
375
+ | Contains | 包含 | 姓名包含 "王" |
376
+ | Not Contains | 不包含 | 職位不包含 "實習" |
377
+ | Greater Than | 大於 | 薪資 > 40000 |
378
+ | Greater or Equal | 大於等於 | 薪資 >= 45000 |
379
+ | Less Than | 小於 | 年齡 < 30 |
380
+ | Less or Equal | 小於等於 | 年齡 <= 35 |
381
+ | Starts With | 開頭是 | 員工編號開頭是 "E" |
382
+ | Ends With | 結尾是 | Email 結尾是 "@company.com" |
383
+ | Is Empty | 為空 | 備註為空 |
384
+ | Is Not Empty | 不為空 | 電話不為空 |
385
+
386
+ ### Update(更新)兩種模式
387
+
388
+ #### 模式 1:By Condition(條件更新)
389
+ - 根據條件篩選要更新的記錄
390
+ - 可以同時更新多個欄位
391
+ - 支援複雜條件組合
392
+ - 適合批量更新符合特定條件的資料
393
+
394
+ **使用情境:**
395
+ - 將所有技術部員工加薪 10%
396
+ - 更新所有在職員工的狀態
397
+ - 標準化符合條件的資料格式
398
+
399
+ #### 模式 2:By Cell Position(儲存格更新)
400
+ - 類似 Excel 的 A1/B2 定位方式
401
+ - 使用列索引(0-based)+ 欄位名稱
402
+ - 支援靈活的範圍選擇
403
+
404
+ **列索引格式:**
405
+ | 格式 | 說明 | 範例 |
406
+ |------|------|------|
407
+ | 單一列 | `0` | 只更新第 1 列 |
408
+ | 範圍 | `0-5` | 更新第 1-6 列 |
409
+ | 多個列 | `0,2,4` | 更新第 1,3,5 列 |
410
+ | 組合 | `0-2,5,7-9` | 更新第 1-3,6,8-10 列 |
411
+
412
+ **注意:** 列索引是 0-based,即第一列是 0,第二列是 1,依此類推。
413
+
414
+ **使用情境:**
415
+ - 修正特定列的資料錯誤
416
+ - 更新報表的表頭或總計列
417
+ - 標記特定位置的資料
418
+ - 批量更新連續或不連續的儲存格
419
+
420
+ ### Update(更新)支援表達式
421
+
422
+ 在更新欄位值時,可以使用 n8n 表達式:
423
+
424
+ **重要:** 表達式會針對**每一筆符合條件的資料**分別評估,確保每筆資料都用自己的值計算!
425
+
426
+ ```javascript
427
+ // 數字計算
428
+ {{ $json.薪資 * 1.1 }} // 加薪 10%(每筆用自己的薪資)
429
+ {{ $json.價格 - 100 }} // 減 100
430
+ {{ $json.數量 + 5 }} // 加 5
431
+
432
+ // 字串操作
433
+ {{ $json.姓名 + " (已更新)" }} // 字串連接
434
+ {{ $json.Email.toLowerCase() }} // 轉小寫
435
+ {{ $json.代碼.toUpperCase() }} // 轉大寫
436
+
437
+ // 日期時間
438
+ {{ $now }} // 當前時間
439
+ {{ $now.format('YYYY-MM-DD') }} // 格式化日期
440
+
441
+ // 條件判斷
442
+ {{ $json.薪資 > 50000 ? "高薪" : "一般" }} // 三元運算(每筆獨立判斷)
443
+ {{ $json.年齡 >= 60 ? "退休" : "在職" }} // 年齡判斷
444
+
445
+ // 數學函數
446
+ {{ Math.round($json.薪資 * 1.1) }} // 四捨五入
447
+ {{ Math.ceil($json.價格 * 0.9) }} // 無條件進位
448
+ {{ Math.floor($json.金額 / 100) * 100 }} // 無條件捨去到百位
449
+ ```
450
+
451
+ **範例:技術部加薪 15%**
452
+ ```
453
+ Update Mode: By Condition
454
+ Condition: 部門 = "技術部"
455
+ Field: 薪資
456
+ Value: {{ $json.薪資 * 1.15 }}
457
+
458
+ 結果:
459
+ - 員工 A (技術部, 50000) → 57500
460
+ - 員工 B (技術部, 60000) → 69000 ✅ 每筆用自己的薪資計算
461
+ - 員工 C (業務部, 45000) → 45000 (不變)
462
+ ```
463
+
464
+ ## 🔧 與其他節點的比較
465
+
466
+ | 功能 | 傳統方式 | JSON CRUD 節點 |
467
+ |------|---------|---------------|
468
+ | 篩選資料 | Filter 節點 | ✅ 單一節點完成 |
469
+ | 更新資料 | Edit Fields + IF | ✅ 單一節點完成 |
470
+ | 儲存格更新 | Code 節點 + 複雜邏輯 | ✅ 視覺化設定 |
471
+ | 刪除資料 | Filter(反向) | ✅ 更直觀的刪除 |
472
+ | 搜尋 | Code 節點 | ✅ 內建搜尋功能 |
473
+ | 統計 | Aggregate | ✅ 更簡單的設定 |
474
+ | 組合操作 | 需要 3-5 個節點 | ✅ 一個節點串接 |
475
+
476
+ ## 💡 最佳實踐
477
+
478
+ ### 1. 處理 Excel 的完整流程
479
+ ```
480
+ Read Binary File
481
+ → Extract from File
482
+ → JSON CRUD (Remove Duplicates)
483
+ → JSON CRUD (Filter)
484
+ → JSON CRUD (Update)
485
+ → JSON CRUD (Sort)
486
+ → Convert to File
487
+ → Write Binary File
488
+ ```
489
+
490
+ ### 2. 資料驗證流程
491
+ ```
492
+ Extract from File
493
+ → JSON CRUD (Filter 移除無效資料)
494
+ → JSON CRUD (Update 標準化格式)
495
+ → JSON CRUD (Statistics 檢查資料品質)
496
+ → Convert to File
497
+ ```
498
+
499
+ ### 4. ⭐ 儲存格精確處理流程(適合複雜 Excel 處理)
500
+ ```
501
+ Extract from File
502
+ → JSON CRUD (Read by Cell - 提取表頭)
503
+ → JSON CRUD (Read by Cell - 提取資料範圍)
504
+ → JSON CRUD (Update by Cell - 修正特定錯誤)
505
+ → JSON CRUD (Filter - 篩選有效資料)
506
+ → JSON CRUD (Statistics - 統計分析)
507
+ → Convert to File
508
+ ```
509
+
510
+ ### 5. 混合模式工作流程
511
+ ```
512
+ Extract from File
513
+ → JSON CRUD (Read by Cell - 只讀取需要的列和欄位)
514
+ → JSON CRUD (Filter - 進一步條件篩選)
515
+ → JSON CRUD (Update by Condition - 批量更新)
516
+ → JSON CRUD (Update by Cell - 修正特殊情況)
517
+ → JSON CRUD (Sort - 排序)
518
+ → Convert to File
519
+ ```
520
+
521
+ ### 3. 報表生成流程
522
+ ```
523
+ Extract from File
524
+ → JSON CRUD (Filter 選擇時間範圍)
525
+ → JSON CRUD (Statistics 分組統計)
526
+ → JSON CRUD (Sort 排序)
527
+ → Convert to File
528
+ ```
529
+
530
+ ### 4. ⭐ 儲存格修正流程
531
+ ```
532
+ Extract from File
533
+ → JSON CRUD (Update by Cell - 修正表頭列)
534
+ → JSON CRUD (Update by Cell - 更新特定錯誤資料)
535
+ → JSON CRUD (Filter 篩選有效資料)
536
+ → Convert to File
537
+ ```
538
+
539
+ ## 🎯 實戰案例
540
+
541
+ ### 案例 1:提取並分析 Excel 特定範圍資料
542
+ **情境:**從一個大型 Excel 檔案中,只需要提取第 10-50 列的姓名、部門、薪資三個欄位進行分析
543
+
544
+ **解決方案:**
545
+ ```
546
+ 步驟 1: Extract from File
547
+ - 將 Excel 轉換為 JSON
548
+
549
+ 步驟 2: JSON CRUD (Read by Cell)
550
+ - Row Index: 9-49 (第 10-50 列,0-based)
551
+ - Field Names: 姓名,部門,薪資
552
+
553
+ 步驟 3: JSON CRUD (Statistics)
554
+ - 對提取的資料進行統計分析
555
+ ```
556
+
557
+ **優點:**
558
+ - 大幅減少記憶體使用
559
+ - 提升處理速度
560
+ - 只處理需要的資料
561
+
562
+ ### 案例 2:Excel 報表資料重組
563
+ **情境:**Excel 報表中,第 1 列是表頭,第 2-10 列是本月資料,第 50-60 列是去年同期資料,需要分別提取進行比較
564
+
565
+ **解決方案:**
566
+ ```
567
+ 步驟 1: JSON CRUD (Read by Cell) - 提取本月資料
568
+ - Row Index: 1-9 (第 2-10 列)
569
+ - Field Names: 留空(讀取所有欄位)
570
+ - 輸出至下一步
571
+
572
+ 步驟 2: JSON CRUD (Read by Cell) - 提取去年資料
573
+ - Row Index: 49-59 (第 50-60 列)
574
+ - Field Names: 留空
575
+ - 輸出至下一步
576
+
577
+ 步驟 3: 比較分析兩組資料
578
+ ```
579
+
580
+ ### 案例 3:修正 Excel 匯入的錯誤資料
581
+ **情境:**匯入的 Excel 檔案中,第 1 列(表頭)的部門欄位錯誤,且第 5-8 列的薪資需要統一更新
582
+
583
+ **解決方案:**
584
+ ```
585
+ 步驟 1: JSON CRUD (Update by Cell)
586
+ - Row Index: 0
587
+ - Field Name: 部門
588
+ - New Value: Department
589
+
590
+ 步驟 2: JSON CRUD (Update by Cell)
591
+ - Row Index: 4-7 (第 5-8 列,0-based)
592
+ - Field Name: 薪資
593
+ - New Value: {{ $json.薪資 * 1.05 }}
594
+ ```
595
+
596
+ ### 案例 4:批量處理客戶資料
597
+ **情境:**需要將特定客戶的狀態標記為「VIP」,並更新他們的折扣率
598
+
599
+ **解決方案:**
600
+ ```
601
+ 步驟 1: JSON CRUD (Filter)
602
+ - 篩選出目標客戶
603
+
604
+ 步驟 2: JSON CRUD (Update by Condition)
605
+ - 條件:客戶等級 = "白金"
606
+ - 更新:狀態 = "VIP",折扣率 = 0.15
607
+ ```
608
+
609
+ ## ⚠️ 注意事項
610
+
611
+ 1. **資料備份**
612
+ - 處理重要資料前,請先備份原始檔案
613
+
614
+ 2. **條件邏輯**
615
+ - Filter 的多個條件預設是 AND 邏輯
616
+ - 可以切換為 OR 邏輯
617
+
618
+ 3. **列索引規則**
619
+ - 列索引從 0 開始(0 = 第 1 列)
620
+ - 範圍是包含首尾的(0-5 表示第 1-6 列)
621
+ - 超出範圍的索引會被自動忽略
622
+
623
+ 4. **效能考量**
624
+ - 處理大量資料(> 10,000 筆)時,建議分批處理
625
+ - 優先使用 Filter 減少資料量
626
+ - Cell Update 適合精確修改,不適合大範圍批量更新
627
+
628
+ 5. **資料型別**
629
+ - 數字比較會自動轉換型別
630
+ - 字串比較區分大小寫(除非使用 Search 的 Case Sensitive 選項)
631
+
632
+ ## 🐛 疑難排解
633
+
634
+ ### 問題:節點沒有出現在 n8n 中
635
+ **解決方案:**
636
+ ```bash
637
+ # 確認環境變數
638
+ export N8N_COMMUNITY_PACKAGES_ENABLED=true
639
+
640
+ # 重啟 n8n
641
+ n8n stop
642
+ n8n start
643
+ ```
644
+
645
+ ### 問題:篩選沒有結果
646
+ **解決方案:**
647
+ - 檢查欄位名稱是否正確(區分大小寫)
648
+ - 檢查比較值的格式
649
+ - 使用 Search 功能測試資料
650
+
651
+ ### 問題:更新沒有生效
652
+ **解決方案:**
653
+ - 確認 Update Conditions 是否正確
654
+ - 檢查表達式語法
655
+ - 先不加條件測試是否全部更新
656
+
657
+ ### 問題:Cell Update 更新了錯誤的列
658
+ **解決方案:**
659
+ - 確認列索引是 0-based(第 1 列 = 0)
660
+ - 檢查索引格式是否正確(單一:0,範圍:0-5,多個:0,2,4)
661
+ - 使用 Table 視圖檢查資料的實際行號
662
+
663
+ ### 問題:範圍更新超出預期
664
+ **解決方案:**
665
+ - 檢查輸入資料的總行數
666
+ - 範圍會自動限制在有效範圍內
667
+ - 使用 Limit 操作先確認資料筆數
668
+
669
+ ### 問題:Cell Read 讀取的欄位不完整
670
+ **解決方案:**
671
+ - 檢查 Field Names 的拼寫是否正確(區分大小寫)
672
+ - 確認欄位名稱與實際資料的欄位名稱一致
673
+ - 留空 Field Names 可以讀取所有欄位進行檢查
674
+
675
+ ### 問題:Cell Read 返回空結果
676
+ **解決方案:**
677
+ - 確認列索引範圍是否在資料範圍內
678
+ - 檢查資料的實際行數(可使用 Limit 模式查看)
679
+ - 驗證列索引格式是否正確(0-based)
680
+
681
+ ### 問題:如何同時讀取多個不連續的範圍?
682
+ **解決方案:**
683
+ - 使用組合格式:`0-5,10-15,20-25`
684
+ - 或分多次 JSON CRUD 節點讀取,然後合併結果
685
+
686
+ ## 🤝 貢獻
687
+
688
+ 歡迎提交 Issue 和 Pull Request!
689
+
690
+ ## 📄 授權
691
+
692
+ MIT License
693
+
694
+ ## 🔗 相關資源
695
+
696
+ - [n8n 官方文檔](https://docs.n8n.io)
697
+ - [n8n 社群節點開發指南](https://docs.n8n.io/integrations/creating-nodes/)
698
+ - [n8n 論壇](https://community.n8n.io)
699
+
700
+ ## 📧 聯絡方式
701
+
702
+ 如有問題或建議,請:
703
+ - 開 Issue: https://github.com/fchart/n8n-nodes-json-crud/issues
704
+ - Email: hueyan.chen@gmail.com
705
+
706
+ ---
707
+
708
+ **讓 Excel 資料處理變得簡單!** 🚀