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.
This workflow collects a blog brief via an n8n form, uses Anthropic Claude to generate an outline and write each section, saves both outline and article as formatted Google Docs in Google Drive, then
This workflow runs a SEEK.com.au job search via Apify on a daily schedule or on-demand form submission, deduplicates new listings, and routes results to Google Sheets, Airtable, a webhook endpoint, an
Vendorbot Form Filler. Uses executeCommand, gmail, telegram, slack. Event-driven trigger; 39 nodes.
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