This workflow follows the Google Sheets → Slack 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": "\uc18c\uc815_n8n_\uc2ac\ub799\ubd07",
"nodes": [
{
"parameters": {
"content": "\uc0ac\uc804\uc791\uc5c5 \uc791\uc5c5\n1. [\uc2ac\ub799] \uc6cc\ud06c\uc2a4\ud398\uc774\uc2a4\uc0dd\uc131\n2. [\uc2ac\ub799 api] \uc571 \uc0dd\uc131\n\uae30\ubcf8\uc124\uc815\n\uc571 \uad8c\ud55c (OAuth & Permission)\n\uc571 \ud648\n \ud45c\uc2dc \uc774\ub984 \uc791\uc131, \ud56d\uc0c1 \uc628\ub77c\uc778 ON, \ud0ed \ud45c\uc2dc ON \n-OAuth \uad8c\ud55c (\ubd07 \ud1a0\ud070, \uc0ac\uc6a9\uc790 \ud1a0\ud070) \ub458\ub2e4 \uc0dd\uc131\ub418\uace0 \uc124\uce58. \n3. [\uc2ac\ub799] \ubd07 \ucd08\ub300\ud558\uae30 \n\uc6cc\ud06c\uc2a4\ud398\uc774\uc2a4 \uc88c\uce21 \ud558\ub2e8 apps \ub780\uc5d0 \ubd07 \ud45c\uc2dc\uc774\ub984 \ud655\uc778\n\ud074\ub9ad \ud6c4 \uc6b0\uce21 \uc0c1\ub2e8 \uc810 \uc138\uac1c \n\uc0c1\uc138\ubcf4\uae30 Open App Details\n\ubd07 \ucd08\ub300\ud560 \ucc44\ub110 \uc120\ud0dd\nAdd testbot too a channel ",
"height": 336,
"width": 416
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-1632,
0
],
"typeVersion": 1,
"id": "e14c0626-51b9-4620-bdee-38fb47d189cd",
"name": "Sticky Note1"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "24ef1afb-ecbb-470d-b7a9-32d6089cc86c",
"name": "=\uadfc\ubb34\uc2dc\uac04",
"value": "={{ DateTime.fromMillis($json.ts * 1000).setZone('Asia/Seoul').toFormat('yyyy-MM-dd HH:mm:ss') }}",
"type": "string"
},
{
"id": "5c86a0d4-b38b-4950-b2a9-6f67611b48b7",
"name": "\uc0ac\uc6a9\uc790\uc774\ub984",
"value": "={{ $json.real_name }}",
"type": "string"
},
{
"id": "19831c1a-c9a2-4370-a4b0-cf53fd4e3fd1",
"name": "\uad6c\ubd84",
"value": "={{ $json.text.includes('\ucd9c\uadfc') ? '\ucd9c\uadfc' : '\ud1f4\uadfc' }}",
"type": "string"
},
{
"id": "1286aa03-a20c-4d78-befc-bb5d17d1a80a",
"name": "\uc6d0\ubcf8\uba54\uc2dc\uc9c0",
"value": "={{ $json.text }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-624,
512
],
"id": "d3522551-0253-4cac-989f-ee2d3fbcddb1",
"name": "Edit Fields2"
},
{
"parameters": {
"resource": "channel",
"operation": "replies",
"channelId": {
"__rl": true,
"value": "C09S7DBUPND",
"mode": "list",
"cachedResultName": "5_\ucd9c\ud1f4\uadfc\uae30\ub85d"
},
"ts": "=1763506818.156159",
"filters": {}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.3,
"position": [
-1264,
496
],
"id": "f67928da-5f73-439f-a92c-cf386c33381f",
"name": "Get a thread",
"alwaysOutputData": true,
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineByPosition",
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
-784,
512
],
"id": "9e11ab2d-66cd-4f1b-8b3f-906b333c72fd",
"name": "Merge"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "1xQYG995Z2sr8L5Vn4rYmhS4jxOnc_SZYjhP2BP1p4TE",
"mode": "list",
"cachedResultName": "[\uc9c0\uc9c0\ud50c\ub7a9] \uadfc\ud0dc\ub0b4\uc5ed",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQYG995Z2sr8L5Vn4rYmhS4jxOnc_SZYjhP2BP1p4TE/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 1859397282,
"mode": "list",
"cachedResultName": "\uc2dc\ud2b84",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xQYG995Z2sr8L5Vn4rYmhS4jxOnc_SZYjhP2BP1p4TE/edit#gid=1859397282"
},
"columns": {
"mappingMode": "autoMapInputData",
"value": {},
"matchingColumns": [],
"schema": [
{
"id": "\uad6c\ubd84",
"displayName": "\uad6c\ubd84",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "\uadfc\ubb34\uc2dc\uac04",
"displayName": "\uadfc\ubb34\uc2dc\uac04",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "\ub0a0\uc9dc",
"displayName": "\ub0a0\uc9dc",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "\uc2dc\uac04",
"displayName": "\uc2dc\uac04",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "\uc0ac\uc6a9\uc790\uc774\ub984",
"displayName": "\uc0ac\uc6a9\uc790\uc774\ub984",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "\uc6d0\ubcf8\uba54\uc2dc\uc9c0",
"displayName": "\uc6d0\ubcf8\uba54\uc2dc\uc9c0",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-448,
512
],
"id": "e97fae22-a252-454a-a3d9-6f1dc4bc2404",
"name": "Append row in sheet1",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "getPermalink",
"channelId": {
"__rl": true,
"value": "C09S7DBUPND",
"mode": "list",
"cachedResultName": "5_\ucd9c\ud1f4\uadfc\uae30\ub85d"
},
"timestamp": 1763506818.156159
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.3,
"position": [
-1456,
496
],
"id": "f93ff4af-251f-4266-a3c2-d3abc1e7d514",
"name": "Get a message permalink",
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "\uc6cc\ud06c\ud50c\ub85c\uc6b0 \uc124\uba85\nSlack (Get Messages): \ud0c0\uc784\uc2a4\ud0ec\ud504\ub97c \ud1b5\ud574 \uba54\uc2dc\uc9c0\ub97c \ubd88\ub7ec\uc635\ub2c8\ub2e4.\n\nSlack (Get a thread): \ud574\ub2f9 \uba54\uc2dc\uc9c0\uc758 \uc2a4\ub808\ub4dc(\ub313\uae00)\ub97c \ubaa8\ub450 \uac00\uc838\uc635\ub2c8\ub2e4.\n\nFunction : \ubd07\uacfc \uad00\ub9ac\uc790(U09PV8GNYDV)\ub97c \uc81c\uc678\ud558\uace0, \ud14d\uc2a4\ud2b8\uc5d0 '\ucd9c\uadfc' \ub610\ub294 '\ud1f4\uadfc' \ud0a4\uc6cc\ub4dc\uac00 \ud3ec\ud568\ub41c \uc0ac\uc6a9\uc790 \uba54\uc2dc\uc9c0\ub9cc \ucd94\ucd9c\n\nSlack (Get Information about user): \uc870\uac74\uc5d0 \ud574\ub2f9\ud558\ub294 \uc0ac\uc6a9\uc790\uc758 real_name \uc815\ubcf4\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. \n\nMerge Node: \ud544\ud130\ub9c1\ub41c \uba54\uc2dc\uc9c0 \ub370\uc774\ud130\uc640 \uc0ac\uc6a9\uc790 \uc774\ub984 \ub370\uc774\ud130\ub97c \ud569\uce69\ub2c8\ub2e4.\n\nEdit Fields2 (Set Node): \ub370\uc774\ud130\ub97c \uc815\ub9ac\ud558\uace0 \uc2dc\uac04\ub300\ub97c \ubcc0\ud658\ud558\uba70, \ubd88\ud544\uc694\ud55c \ud544\ub4dc\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4.\n\nGoogle Sheets: \ucd5c\uc885 \ub370\uc774\ud130\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.",
"height": 336,
"width": 736
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-1104,
0
],
"typeVersion": 1,
"id": "3e05de7d-853e-4953-8ccd-637f92ad95f9",
"name": "Sticky Note"
},
{
"parameters": {
"jsCode": "const items = [];\nconst EXCLUDED_USER_ID = 'U09PV8GNYDV'; // \uc81c\uc678\ud560 \uad00\ub9ac\uc790 ID\ub97c \ubcc0\uc218\ub85c \uc120\uc5b8\n\n// \uc785\ub825\ub41c \ubaa8\ub4e0 \ud56d\ubaa9(Slack \uba54\uc2dc\uc9c0)\uc744 \ubc18\ubcf5\ud569\ub2c8\ub2e4.\nfor (const item of $input.all()) {\n const user = item.json.user; // \uba54\uc2dc\uc9c0 \uc791\uc131\uc790 ID\n const text = item.json.text; // \uba54\uc2dc\uc9c0 \ub0b4\uc6a9\n\n // 1. \uc2ac\ub799\ubd07\uc774 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4.\n const isNotBot = user !== 'USLACKBOT'; \n \n // 2. \uad00\ub9ac\uc790 ID (U09PV8GNYDV)\uac00 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4.\n const isNotAdmin = user !== EXCLUDED_USER_ID; \n\n // 3. \ud14d\uc2a4\ud2b8\uc5d0 '\ucd9c\uadfc' \ub610\ub294 '\ud1f4\uadfc'\uc774 \ud3ec\ud568\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\n const isCheckInOut = text && (text.includes('\ucd9c\uadfc') || text.includes('\ud1f4\uadfc'));\n \n // \uc138 \uc870\uac74 (\ubd07\uc774 \uc544\ub2d8 && \uad00\ub9ac\uc790\uac00 \uc544\ub2d8 && \ucd9c\ud1f4\uadfc \ud0a4\uc6cc\ub4dc \ud3ec\ud568)\uc774 \ubaa8\ub450 \ucc38\uc77c \uacbd\uc6b0\uc5d0\ub9cc \ucd9c\ub825\ud569\ub2c8\ub2e4.\n if (isNotBot && isNotAdmin && isCheckInOut) {\n items.push(item);\n }\n}\n\nreturn items;"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-1088,
496
],
"id": "b0a35022-1d7e-4428-b6c7-8fc4964a9719",
"name": "Code in JavaScript"
},
{
"parameters": {
"resource": "user",
"user": {
"__rl": true,
"value": "={{ $json.user }}",
"mode": "id"
}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.3,
"position": [
-928,
608
],
"id": "74f009c7-3fb9-4bf6-96df-8e93d5114e9f",
"name": "Get information about a user",
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"trigger": [
"any_event"
],
"channelId": {
"__rl": true,
"value": "C09S7DBUPND",
"mode": "list",
"cachedResultName": "5_\ucd9c\ud1f4\uadfc\uae30\ub85d"
},
"options": {}
},
"type": "n8n-nodes-base.slackTrigger",
"typeVersion": 1,
"position": [
-1632,
640
],
"id": "9f8038d4-871f-4f46-bc77-1ab35c5fd615",
"name": "Slack Trigger",
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-1632,
352
],
"id": "c2ad0992-59c3-4fd4-94a6-400369d53f8d",
"name": "Schedule Trigger"
},
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-1632,
496
],
"id": "7b467e31-d783-4eba-83d7-96c6f6261a83",
"name": "When clicking \u2018Execute workflow\u2019"
}
],
"connections": {
"Edit Fields2": {
"main": [
[
{
"node": "Append row in sheet1",
"type": "main",
"index": 0
}
]
]
},
"Get a thread": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"Get a message permalink": {
"main": [
[
{
"node": "Get a thread",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
},
{
"node": "Get information about a user",
"type": "main",
"index": 0
}
]
]
},
"Get information about a user": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Slack Trigger": {
"main": [
[]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Get a message permalink",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "bc1c18c2-6066-439b-b30e-aa7f63c337da",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "rkzLE75ewVGfK77y",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
소정_n8n_슬랙봇. Uses slack, googleSheets, slackTrigger. Event-driven trigger; 12 nodes.
Source: https://github.com/ggplab/n8n-playbook/blob/08ee7d84568b1462a8b1b16a29607db085ee0846/02-usecases/03-workflow-attendance/n8n_Slack_Attendance_Bot.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.
Type in Slack. Walk away. Get a professional PDF report and a structured Excel fix sheet delivered to Google Drive and posted back in your Slack thread — fully automated, zero manual work.
Transform your lead list into an AI-powered calling machine. This workflow automates your entire cold calling process using Vapi's conversational AI to initiate calls, qualify leads, capture detailed
This workflow automates the full company enrichment pipeline: Simply import CSV company lists to Slack and save time on enrichment and CRM maintenance. It processes uploaded files, extracts company do
This workflow is essential for technical recruiters, talent acquisition teams, and business intelligence analysts who need to dive deep into a pre-qualified list of developers to understand their rece
This workflow is essential for dropshippers, e-commerce store owners, and anyone looking to quickly import product catalogs from specific websites into their Shopify store.