Cấu hình chi tiết các Node trong n8n Workflow
Trang này cung cấp cấu hình chi tiết cho từng node trong workflow. Bạn có thể sao chép các cấu hình này để áp dụng vào workflow của mình.
1. Schedule Trigger
Node Schedule Trigger là điểm bắt đầu của workflow, nó sẽ kích hoạt workflow vào 9h sáng hàng ngày.
{
"parameters": {
"triggerTimes": {
"item": [
{
"mode": "everyDay",
"hour": 9,
"minute": 0
}
]
}
}
}
2. Google Sheets - Lấy dữ liệu
Node Google Sheets sẽ đọc dữ liệu từ bảng tính đã chỉ định. Nó sẽ lấy tất cả các hàng từ phạm vi A:C.
{
"parameters": {
"operation": "read",
"sheetName": "Trang tính1",
"range": "A:C",
"options": {
"headerRow": true
},
"documentId": "11IZ1G-2ekIePE-hVcPXKu4uBnUczhLtdi3KwW7Lfc_o"
}
}
3. Function - Chọn hàng ngẫu nhiên
Node Function sẽ thực thi mã JavaScript để chọn một hàng ngẫu nhiên từ dữ liệu Google Sheets.
// Lấy dữ liệu từ Google Sheets
const rows = items[0].json.rows;
// Bỏ qua hàng tiêu đề
if (rows.length <= 1) {
return [];
}
// Chọn một hàng ngẫu nhiên (trừ hàng tiêu đề)
const randomIndex = Math.floor(Math.random() * (rows.length - 1)) + 1;
const selectedRow = rows[randomIndex];
// Trả về dữ liệu của hàng được chọn
return [
{
json: {
STT: selectedRow.STT,
noidung: selectedRow["Nội dung bài đăng"],
folderName: selectedRow.folderName,
rowIndex: randomIndex + 1 // +1 vì Google Sheets bắt đầu từ 1, không phải 0
}
}
];
4. Google Drive - Tìm ảnh
Node Google Drive Search sẽ tìm tất cả các file ảnh trong thư mục có tên tương ứng với giá trị folderName.
{
"parameters": {
"operation": "search",
"query": "mimeType contains 'image/' and 'image/{{$node[\"Function\"].json[\"folderName\"]}}' in parents",
"options": {
"fields": [
"id",
"name",
"webViewLink",
"mimeType"
],
"orderBy": {
"fields": [
{
"field": "name",
"direction": "asc"
}
]
}
}
}
}
5. Split In Batches - Xử lý nhiều ảnh
Node Split In Batches sẽ chia mảng các file ảnh thành các batch nhỏ, mỗi batch chứa một file.
{
"parameters": {
"batchSize": 1,
"options": {
"reset": true
}
}
}
6. Google Drive - Tải ảnh
Node Google Drive Download sẽ tải file ảnh từ Google Drive dựa trên ID file.
{
"parameters": {
"operation": "download",
"fileId": "={{$json[\"id\"]}}",
"options": {}
}
}
7. SplitInBatches - Xử lý nhiều Facebook Pages
Node SplitInBatches thứ hai này sẽ chia workflow thành nhiều nhánh, mỗi nhánh xử lý một Facebook Page.
{
"parameters": {
"batchSize": 1,
"options": {
"reset": false
},
"batches": {
"batch": [
{
"json": {
"pageId": "YOUR_PAGE_ID_1",
"pageName": "Page 1"
}
},
{
"json": {
"pageId": "YOUR_PAGE_ID_2",
"pageName": "Page 2"
}
},
{
"json": {
"pageId": "YOUR_PAGE_ID_3",
"pageName": "Page 3"
}
}
]
}
}
}
Lưu ý: Thay thế YOUR_PAGE_ID_1
, YOUR_PAGE_ID_2
, YOUR_PAGE_ID_3
bằng ID thực tế của các Facebook Pages của bạn.
8. Facebook Graph API - Đăng bài với ảnh
Node Facebook Graph API sẽ đăng bài với ảnh lên Facebook Page.
{
"parameters": {
"graphApiVersion": "v18.0",
"resource": "={{$json[\"pageId\"]}}/photos",
"httpMethod": "POST",
"additionalFields": {
"message": "={{$node[\"Function\"].json[\"noidung\"]}}",
"published": true
},
"options": {
"bodyContentType": "multipart-form-data",
"enableBatching": false
},
"dataPropertyName": "source",
"binaryPropertyName": "data"
}
}
9. Wait - Chờ đăng bài hoàn tất
Node Wait sẽ tạm dừng workflow trong 2 giây để đảm bảo bài đăng đã được Facebook xử lý hoàn tất.
{
"parameters": {
"amount": 2,
"unit": "seconds"
}
}
10. Facebook Graph API - Lấy thông tin bài đăng
Node Facebook Graph API thứ hai này sẽ lấy thông tin chi tiết của bài đăng đã tạo, bao gồm permalink URL.
{
"parameters": {
"graphApiVersion": "v18.0",
"resource": "={{$json[\"id\"]}}",
"httpMethod": "GET",
"additionalFields": {
"fields": "id,permalink_url"
}
}
}
11. Function - Chuẩn bị dữ liệu cập nhật
Node Function thứ hai này sẽ chuẩn bị dữ liệu để cập nhật vào Google Sheets.
// Lấy thông tin từ các node trước đó
const postInfo = items[0].json;
const selectedRow = $node["Function"].json;
// Chuẩn bị dữ liệu cập nhật
return [
{
json: {
rowNumber: selectedRow.rowIndex,
values: {
"D": "Đã đăng",
"E": postInfo.permalink_url
},
pageInfo: {
pageId: $json.pageId,
pageName: $json.pageName
}
}
}
];
12. Google Sheets - Cập nhật trạng thái
Node Google Sheets Update sẽ cập nhật trạng thái và link bài đăng vào Google Sheets.
{
"parameters": {
"operation": "update",
"documentId": "11IZ1G-2ekIePE-hVcPXKu4uBnUczhLtdi3KwW7Lfc_o",
"sheetName": "Trang tính1",
"range": "={{$json[\"rowNumber\"]}}:{{$json[\"rowNumber\"]}}",
"options": {
"valueInputMode": "RAW"
},
"valueInputOption": "RAW",
"dataMode": "autoMap"
}
}
Xử lý lỗi và trường hợp đặc biệt
Xử lý khi không tìm thấy ảnh
Thêm một node IF sau node Google Drive - Tìm ảnh để kiểm tra xem có tìm thấy ảnh không:
{
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{$json.files.length}}",
"operation": "larger",
"value2": 0
}
]
}
}
}
Nếu không tìm thấy ảnh, thêm node Function để cập nhật Google Sheets với trạng thái lỗi:
// Lấy thông tin từ node Function trước đó
const selectedRow = $node["Function"].json;
// Chuẩn bị dữ liệu cập nhật với trạng thái lỗi
return [
{
json: {
rowNumber: selectedRow.rowIndex,
values: {
"D": "Lỗi",
"E": "Không tìm thấy ảnh trong thư mục " + selectedRow.folderName
}
}
}
];
Xử lý lỗi khi đăng bài
Thêm node Error Trigger để bắt lỗi từ node Facebook Graph API - Đăng bài với ảnh:
{
"parameters": {
"errorDescription": "Error when posting to Facebook",
"continueOnFail": true
}
}
Sau đó kết nối với một node Function để cập nhật Google Sheets với trạng thái lỗi:
// Lấy thông tin lỗi
const error = $input.all()[0].json.error;
const selectedRow = $node["Function"].json;
// Chuẩn bị dữ liệu cập nhật với trạng thái lỗi
return [
{
json: {
rowNumber: selectedRow.rowIndex,
values: {
"D": "Lỗi",
"E": "Lỗi khi đăng bài: " + error.message
}
}
}
];
Hướng dẫn kết nối các Node
- Schedule Trigger → Google Sheets - Lấy dữ liệu
- Google Sheets - Lấy dữ liệu → Function - Chọn hàng ngẫu nhiên
- Function - Chọn hàng ngẫu nhiên → Google Drive - Tìm ảnh
- Google Drive - Tìm ảnh → Split In Batches - Xử lý nhiều ảnh
- Split In Batches - Xử lý nhiều ảnh → Google Drive - Tải ảnh
- Google Drive - Tải ảnh → SplitInBatches - Xử lý nhiều Facebook Pages
- SplitInBatches - Xử lý nhiều Facebook Pages → Facebook Graph API - Đăng bài với ảnh
- Facebook Graph API - Đăng bài với ảnh → Wait - Chờ đăng bài hoàn tất
- Wait - Chờ đăng bài hoàn tất → Facebook Graph API - Lấy thông tin bài đăng
- Facebook Graph API - Lấy thông tin bài đăng → Function - Chuẩn bị dữ liệu cập nhật
- Function - Chuẩn bị dữ liệu cập nhật → Google Sheets - Cập nhật trạng thái