This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "P-ACA \ud559\uc0dd \ub3d9\uae30\ud654",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"id": "trigger",
"name": "\ub9e4\uc77c \uc544\uce68 9\uc2dc",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {
"method": "GET",
"url": "https://supermax.kr/paca/students",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-Key",
"value": "paca-n8n-api-key-2024"
}
]
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "academy_id",
"value": "2"
},
{
"name": "limit",
"value": "1000"
}
]
},
"options": {}
},
"id": "get-students",
"name": "\ud559\uc0dd \ubaa9\ub85d \uc870\ud68c",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
220,
0
]
},
{
"parameters": {
"method": "GET",
"url": "https://supermax.kr/paca/payments",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-Key",
"value": "paca-n8n-api-key-2024"
}
]
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "academy_id",
"value": "2"
},
{
"name": "year",
"value": "={{ $now.year }}"
},
{
"name": "month",
"value": "={{ $now.month }}"
},
{
"name": "limit",
"value": "1000"
}
]
},
"options": {}
},
"id": "get-payments",
"name": "\uc774\ubc88\ub2ec \uc218\ub0a9 \uc870\ud68c",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
220,
200
]
},
{
"parameters": {
"operation": "clear",
"documentId": {
"__rl": true,
"value": "1O9wjLbA969k7YZ1eHVnE2iahXWCt5_d3biWXJhW4A34",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "\ud559\uc0dd\uba85\ub2e8",
"mode": "name"
},
"clear": "exceptFirstRow"
},
"id": "clear-students-sheet",
"name": "\ud559\uc0dd\uba85\ub2e8 \ucd08\uae30\ud654",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
440,
0
]
},
{
"parameters": {
"operation": "clear",
"documentId": {
"__rl": true,
"value": "1O9wjLbA969k7YZ1eHVnE2iahXWCt5_d3biWXJhW4A34",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "\uc6d4\ubcc4\uc218\ub0a9",
"mode": "name"
},
"clear": "exceptFirstRow"
},
"id": "clear-payments-sheet",
"name": "\uc6d4\ubcc4\uc218\ub0a9 \ucd08\uae30\ud654",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
440,
200
]
},
{
"parameters": {
"jsCode": "const students = $('\ud559\uc0dd \ubaa9\ub85d \uc870\ud68c').first().json.students || $('\ud559\uc0dd \ubaa9\ub85d \uc870\ud68c').first().json.data || $('\ud559\uc0dd \ubaa9\ub85d \uc870\ud68c').first().json;\n\nconst statusMap = {\n 'active': '\uc7ac\uc6d0',\n 'paused': '\ud734\uc6d0',\n 'withdrawn': '\ud1f4\uc6d0',\n 'graduated': '\uc878\uc5c5'\n};\n\nconst result = [];\nlet no = 1;\n\nconst studentList = Array.isArray(students) ? students : (students.students || []);\n\nfor (const s of studentList) {\n result.push({\n json: {\n 'No': no++,\n '\uc774\ub984': s.name || '',\n '\ud559\ub144': s.grade || '',\n '\uc0c1\ud0dc': statusMap[s.status] || s.status || '',\n '\ud559\uc0dd\uc804\ud654': s.phone || '',\n '\ud559\ubd80\ubaa8\uc804\ud654': s.parent_phone || '',\n '\ub4f1\ub85d\uc77c': s.created_at ? s.created_at.split('T')[0] : ''\n }\n });\n}\n\nreturn result;"
},
"id": "transform-students",
"name": "\ud559\uc0dd \ub370\uc774\ud130 \ubcc0\ud658",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
660,
0
]
},
{
"parameters": {
"jsCode": "const payments = $('\uc774\ubc88\ub2ec \uc218\ub0a9 \uc870\ud68c').first().json.payments || $('\uc774\ubc88\ub2ec \uc218\ub0a9 \uc870\ud68c').first().json.data || $('\uc774\ubc88\ub2ec \uc218\ub0a9 \uc870\ud68c').first().json;\n\nconst statusMap = {\n 'pending': '\ubbf8\ub0a9',\n 'partial': '\ubd80\ubd84\ub0a9',\n 'paid': '\uc644\ub0a9',\n 'refunded': '\ud658\ubd88'\n};\n\nconst result = [];\nlet no = 1;\n\nconst paymentList = Array.isArray(payments) ? payments : (payments.payments || []);\n\nfor (const p of paymentList) {\n const yearMonth = p.year && p.month ? `${p.year}-${String(p.month).padStart(2, '0')}` : '';\n result.push({\n json: {\n 'No': no++,\n '\uc774\ub984': p.student_name || '',\n '\ud559\ub144': p.grade || '',\n '\ub144\uc6d4': yearMonth,\n '\uc218\uac15\ub8cc': p.amount || 0,\n '\ub0a9\ubd80\uc0c1\ud0dc': statusMap[p.payment_status] || p.payment_status || '',\n '\ub0a9\ubd80\uc77c': p.paid_date ? p.paid_date.split('T')[0] : ''\n }\n });\n}\n\nreturn result;"
},
"id": "transform-payments",
"name": "\uc218\ub0a9 \ub370\uc774\ud130 \ubcc0\ud658",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
660,
200
]
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "1O9wjLbA969k7YZ1eHVnE2iahXWCt5_d3biWXJhW4A34",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "\ud559\uc0dd\uba85\ub2e8",
"mode": "name"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"No": "={{ $json['No'] }}",
"\uc774\ub984": "={{ $json['\uc774\ub984'] }}",
"\ud559\ub144": "={{ $json['\ud559\ub144'] }}",
"\uc0c1\ud0dc": "={{ $json['\uc0c1\ud0dc'] }}",
"\ud559\uc0dd\uc804\ud654": "={{ $json['\ud559\uc0dd\uc804\ud654'] }}",
"\ud559\ubd80\ubaa8\uc804\ud654": "={{ $json['\ud559\ubd80\ubaa8\uc804\ud654'] }}",
"\ub4f1\ub85d\uc77c": "={{ $json['\ub4f1\ub85d\uc77c'] }}"
}
},
"options": {}
},
"id": "append-students",
"name": "\ud559\uc0dd\uba85\ub2e8 \uc785\ub825",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
880,
0
]
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "1O9wjLbA969k7YZ1eHVnE2iahXWCt5_d3biWXJhW4A34",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "\uc6d4\ubcc4\uc218\ub0a9",
"mode": "name"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"No": "={{ $json['No'] }}",
"\uc774\ub984": "={{ $json['\uc774\ub984'] }}",
"\ud559\ub144": "={{ $json['\ud559\ub144'] }}",
"\ub144\uc6d4": "={{ $json['\ub144\uc6d4'] }}",
"\uc218\uac15\ub8cc": "={{ $json['\uc218\uac15\ub8cc'] }}",
"\ub0a9\ubd80\uc0c1\ud0dc": "={{ $json['\ub0a9\ubd80\uc0c1\ud0dc'] }}",
"\ub0a9\ubd80\uc77c": "={{ $json['\ub0a9\ubd80\uc77c'] }}"
}
},
"options": {}
},
"id": "append-payments",
"name": "\uc6d4\ubcc4\uc218\ub0a9 \uc785\ub825",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
880,
200
]
}
],
"connections": {
"\ub9e4\uc77c \uc544\uce68 9\uc2dc": {
"main": [
[
{
"node": "\ud559\uc0dd \ubaa9\ub85d \uc870\ud68c",
"type": "main",
"index": 0
},
{
"node": "\uc774\ubc88\ub2ec \uc218\ub0a9 \uc870\ud68c",
"type": "main",
"index": 0
}
]
]
},
"\ud559\uc0dd \ubaa9\ub85d \uc870\ud68c": {
"main": [
[
{
"node": "\ud559\uc0dd\uba85\ub2e8 \ucd08\uae30\ud654",
"type": "main",
"index": 0
}
]
]
},
"\uc774\ubc88\ub2ec \uc218\ub0a9 \uc870\ud68c": {
"main": [
[
{
"node": "\uc6d4\ubcc4\uc218\ub0a9 \ucd08\uae30\ud654",
"type": "main",
"index": 0
}
]
]
},
"\ud559\uc0dd\uba85\ub2e8 \ucd08\uae30\ud654": {
"main": [
[
{
"node": "\ud559\uc0dd \ub370\uc774\ud130 \ubcc0\ud658",
"type": "main",
"index": 0
}
]
]
},
"\uc6d4\ubcc4\uc218\ub0a9 \ucd08\uae30\ud654": {
"main": [
[
{
"node": "\uc218\ub0a9 \ub370\uc774\ud130 \ubcc0\ud658",
"type": "main",
"index": 0
}
]
]
},
"\ud559\uc0dd \ub370\uc774\ud130 \ubcc0\ud658": {
"main": [
[
{
"node": "\ud559\uc0dd\uba85\ub2e8 \uc785\ub825",
"type": "main",
"index": 0
}
]
]
},
"\uc218\ub0a9 \ub370\uc774\ud130 \ubcc0\ud658": {
"main": [
[
{
"node": "\uc6d4\ubcc4\uc218\ub0a9 \uc785\ub825",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"timezone": "Asia/Seoul"
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
P-ACA 학생 동기화. Uses httpRequest, googleSheets. Scheduled trigger; 9 nodes.
Source: https://github.com/seanyjeong/pacapro/blob/2d6ce61b883a31122fd1a3682c8e3f34563e2d4f/n8n-workflows/paca-sheets-sync.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Dm-Profile-Visitors. Uses httpRequest, googleSheets. Scheduled trigger; 21 nodes.
CMS Content Upload Automation. Uses googleSheets, httpRequest. Scheduled trigger; 10 nodes.
Google Maps. Uses scheduleTrigger, httpRequest, splitInBatches, googleSheets. Scheduled trigger; 7 nodes.
Google Maps Business Scraper. Uses scheduleTrigger, googleSheets, httpRequest. Scheduled trigger; 5 nodes.
RoboNuggets - Faceless POV AI Machine (R24). Uses scheduleTrigger, googleSheets, chainLlm, lmChatOpenAi. Scheduled trigger; 31 nodes.