資料本身並不會說話,只有被整理過的資料,才能講故事。
上一篇,我們已經把每本書的「分類、價格、庫存資訊」一筆筆爬進 Airtable。
不過你有沒有注意到,「庫存」目前長得有點囉嗦,比如:
In stock (19 available)
我們只想知道有幾本書就好(例如:19),這樣之後才能進行數據分析、製作圖表、甚至設定庫存告警。
那要怎麼從文字中擷取出數字呢?
本篇工作流可在此下載(連結)
問 AI Agent 每次幫你抓數字
缺點是成本很高:假設有 1000 本書,每本都要問一次 AI,費用會直線上升。
一次請 AI 寫好程式,讓 n8n 自己跑
用 Code 節點 放上這段程式碼,之後不管跑幾本書都能自動處理,只要請 AI 一次就好。
我們要做的是第二種,用 Javascript + Code 節點,把「Availability」文字轉成純數字欄位「Number」。
[
{
"Classification": "Young Adult",
"Price": "£17.46",
"Availability": "In stock (19 available)"
}
]
下面是我 n8n 某個節點的輸出資料,是關於一本書的資料。
其中 Availability 是文字,但我只想要裡面的數字(剩多少本書)。如果沒有,就顯示 0。
幫我寫一段 Javascript,放進 n8n 的 Code 節點裡,輸出時把 Availability 改名成 Number。
ChatGPT 會產出像這樣的程式碼:
return items.map(item => {
const data = item.json;
// 用正則抓取數字
const match = data.Availability.match(/\((\d+)\s+available\)/);
const number = match ? parseInt(match[1], 10) : 0;
return {
json: {
Classification: data.Classification,
Price: data.Price,
Number: number
}
};
});
把程式碼貼進 Code 節點的「JavaScript」區塊,點執行,
就可以看到原本的 Availability
變成純數字的 Number
了 🎉
這時你會發現,Airtable 節點裡原本放 {{$json.Availability}}
的欄位變紅了(錯誤狀態)。
因為現在上一個節點已不是 HTML 節點,而是 Code 節點,而且已經沒有 Availability 欄位了。
解決方法有兩種:
如果仍需要原始文字,就從 HTML 節點拉資料進來:
{{ $('HTML1').item.json.Availability }}
如果只要數字,就直接從 Code 節點拉:
{{$json.Number}}
但這裡還有一個重點:
Airtable 原本的 Availability
欄位屬性是「Single line text」,如果你直接塞數字會出錯。
因此我們要 新建一個「Number」欄位 來存數字。
回到 Airtable 介面,新建欄位:
Number
Number
回到 n8n 的 Airtable 節點,點右上角「Refresh Column List」,
就能看到新的 Number
欄位出現。
把 {{$json.Number}}
拉到 Number
欄位的輸入框。
測試執行後,Airtable 就會看到一筆筆數字出現 🎯
回到工作流最前端,按「Execute workflow」,整個爬蟲流程就會自動循環處理所有書籍。
這次我們只是把文字中的數字抽出來,但其實 Code 節點還能做更多事:
記得:只要是資料轉換的需求,都可以優先考慮 Code 節點,
然後問 ChatGPT 幫你寫程式就好,自己不用會寫程式 💪
這次我們用 Code 節點處理資料,你也可以試試:
Availability
的文字 → 數字轉換🔍 提示:
如果用「Information Extraction」節點處理資料,只會跑一次;
但用 AI Agent,若還要調用工具,可能會來回呼叫多次,成本差很多喔 💰
我建立了一個行銷技術交流群,專注討論 SEO、行銷自動化等主題,歡迎有興趣的朋友一起加入交流。
掃QR Code 或點擊圖片加入