AutomationFlowsGeneral › Daily Student Sync to Google Sheets

Daily Student Sync to Google Sheets

Original n8n title: P-aca 학생 동기화

P-ACA 학생 동기화. Uses httpRequest, googleSheets. Scheduled trigger; 9 nodes.

Cron / scheduled trigger★★★★☆ complexity9 nodesHTTP RequestGoogle Sheets
General Trigger: Cron / scheduled Nodes: 9 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "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"
  }
}
Pro

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 →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

Dm-Profile-Visitors. Uses httpRequest, googleSheets. Scheduled trigger; 21 nodes.

HTTP Request, Google Sheets
General

CMS Content Upload Automation. Uses googleSheets, httpRequest. Scheduled trigger; 10 nodes.

Google Sheets, HTTP Request
General

Google Maps. Uses scheduleTrigger, httpRequest, splitInBatches, googleSheets. Scheduled trigger; 7 nodes.

HTTP Request, Google Sheets
General

Google Maps Business Scraper. Uses scheduleTrigger, googleSheets, httpRequest. Scheduled trigger; 5 nodes.

Google Sheets, HTTP Request
General

RoboNuggets - Faceless POV AI Machine (R24). Uses scheduleTrigger, googleSheets, chainLlm, lmChatOpenAi. Scheduled trigger; 31 nodes.

Google Sheets, Chain Llm, OpenAI Chat +5