Google Forms → Jira Issue-Ersteller
Dies ist ein Miscellaneous, Multimodal AI-Bereich Automatisierungsworkflow mit 9 Nodes. Hauptsächlich werden Code, Jira, Gmail, GoogleSheets, GoogleSheetsTrigger und andere Nodes verwendet. Jira-Tickets aus Google Formular erstellen mit Tabellenaktualisierung und E-Mail-Benachrichtigungen
- •Google-Konto + Gmail API-Anmeldedaten
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (9)
Kategorie
{
"id": "JmH0beZB5ZUgJGor",
"meta": {
"instanceId": "0430772da25f7bca29bf5ef2b251086a85fb4096503a6f781526d32befd038d6",
"templateCredsSetupCompleted": true
},
"name": "Google Forms → Jira Issue Creator",
"tags": [
{
"id": "MxIJ6vHorSEdfi3v",
"name": "google form",
"createdAt": "2025-08-18T07:16:22.720Z",
"updatedAt": "2025-08-18T07:16:22.720Z"
},
{
"id": "eAzNESqLUWwWMrE9",
"name": "gmail",
"createdAt": "2025-08-18T07:16:22.709Z",
"updatedAt": "2025-08-18T07:16:22.709Z"
},
{
"id": "EYNbAs3Q9sg9NksG",
"name": "Jira",
"createdAt": "2025-09-10T10:47:53.750Z",
"updatedAt": "2025-09-10T10:47:53.750Z"
},
{
"id": "7zEwLFClveXBEcdb",
"name": "google sheet",
"createdAt": "2025-08-18T07:16:22.756Z",
"updatedAt": "2025-08-18T07:16:22.756Z"
}
],
"nodes": [
{
"id": "8b90ebac-96e0-4b28-8024-edd6692f45c9",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
-544
],
"parameters": {
"color": 3,
"width": 304,
"height": 176,
"content": "## Required\n\n\n• Google Form + response sheet\n• Jira Cloud project (API email + API token)\n• Gmail credential"
},
"typeVersion": 1
},
{
"id": "f7d9bcc1-d9c2-4844-ab4d-7d9d6b8610c3",
"name": "Trigger bei Zeilenhinzufügung",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
208,
-16
],
"parameters": {
"event": "rowAdded",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"id": "3lAHCn7CBb11QTMg",
"name": "Google Sheets Trigger account 2"
}
},
"typeVersion": 1
},
{
"id": "5278e62a-2d6c-4aa5-8621-77e38efd9dc6",
"name": "Felder normalisieren",
"type": "n8n-nodes-base.code",
"position": [
416,
-16
],
"parameters": {
"jsCode": "const priorityMap = {\n \"Highest\": \"1\",\n \"High\": \"2\", \n \"Medium\": \"3\",\n \"Low\": \"4\",\n \"Lowest\": \"5\"\n};\n\nconst sheetPriority = ($json['Priority'] || \"\").toString().trim();\nconst jiraPriority = priorityMap[sheetPriority] || \"3\";\nconst context = $json['Context'] || \"No context provided\";\nconst email = $json['Adresse e-mail'] || $json['Email'] || \"No email provided\";\n\n// keep data from the Google Sheets Trigger\nconst originalData = $input.first().json;\n\nreturn {\n ...originalData, // keep all data from trigger\n priority: jiraPriority,\n summary: context,\n description: `Email: ${email}\\nContext: ${context}\\nSteps to reproduce: ${$json['If bug, steps to reproduce'] || \"N/A\"}\\nAcceptance criteria: ${$json['Acceptance criteria'] || \"N/A\"}`\n};"
},
"typeVersion": 2
},
{
"id": "ce1d830b-85af-423f-81d1-36089e5ce1ae",
"name": "Jira Ticket erstellen",
"type": "n8n-nodes-base.jira",
"position": [
672,
-16
],
"parameters": {
"project": {
"__rl": true,
"mode": "list",
"value": "10002",
"cachedResultName": "test2"
},
"summary": "={{$json.summary}}",
"issueType": {
"__rl": true,
"mode": "list",
"value": "10014",
"cachedResultName": "Story"
},
"additionalFields": {
"priority": {
"__rl": true,
"mode": "",
"value": "={{$json.priority}}"
},
"description": "={{$json.description}}"
}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "lvsJXpsetLJRz9RJ",
"name": "Jira SW Cloud account 2"
}
},
"typeVersion": 1
},
{
"id": "387f2792-94a0-43ec-b358-a27229c50566",
"name": "Google Tabelle mit Ticketinformationen aktualisieren",
"type": "n8n-nodes-base.googleSheets",
"position": [
976,
-16
],
"parameters": {
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "c1iXpA4kOmymMGXu",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.7
},
{
"id": "5cc9d8ed-dea5-44cc-bc5f-60fcc2a8b464",
"name": "Benachrichtigungs-E-Mail",
"type": "n8n-nodes-base.gmail",
"position": [
1296,
-16
],
"webhookId": "875c21fa-2282-4652-b4f7-7894df8d7769",
"parameters": {
"message": "=<p>Hello, you just received a new Jira ticket created.</p>\n\n<p><strong>Details:</strong></p>\n<ul>\n <li><strong>Reference:</strong> {{$node[\"Cretate Jira Ticket\"].json.key}}</li>\n <li><strong>URL:</strong> \n <a href=\"https://YOURSITE.atlassian.net/browse/{{$node['Cretate Jira Ticket'].json.key}}\">View ticket</a>\n </li>\n <li><strong>Title:</strong> {{\n (String($node[\"Normalize fields\"].json.summary ?? '')\n .replace(/\\s+/g,' ')\n .trim())\n || 'New issue from Google Form'\n }}</li>\n <li><strong>Priority:</strong> {{\n (()=>{\n const p = String($node[\"Normalize fields\"].json.priority ?? $json.priority ?? '').toLowerCase().trim();\n const map = { '1':'Highest','2':'High','3':'Medium','4':'Low','5':'Lowest',\n 'highest':'Highest','high':'High','medium':'Medium','low':'Low','lowest':'Lowest' };\n return map[p] || (p || 'Medium');\n })()\n }}</li>\n <li><strong>Status:</strong> {{ String($json.status ?? 'Created') }}</li>\n</ul>\n\n<p><strong>Requester:</strong></p>\n<ul>\n <li><strong>Email:</strong> {{\n $node[\"Trigger when row added\"].json[\"Adresse e-mail\"]\n || $node[\"Trigger when row added\"].json.Email\n || $node[\"Normalize fields\"].json[\"Adresse e-mail\"]\n || $node[\"Normalize fields\"].json.Email\n || ''\n }}</li>\n</ul>",
"options": {},
"subject": "You just received a new ticket"
},
"credentials": {
"gmailOAuth2": {
"id": "C7dkDtQlmRSRwBlz",
"name": "Gmail account 2"
}
},
"typeVersion": 2.1
},
{
"id": "d4016ada-d836-4ff2-9c57-882fda5d1e1f",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
112,
-544
],
"parameters": {
"width": 448,
"height": 704,
"content": "## 1) Trigger and Normalize \n\nTrigger: New row added to Google Sheets\n\nData Processing:\n- Clean and normalize all fields\n- summary: Single-spaced, trimmed text\n- description: Preserve paragraphs (trimmed)\n- reporter_email: Extract from \"email address\" or \"Email\" fields\n- Handle optional fields (like attachments)\n\nBest Practices:\nPerform all data cleaning here to avoid reprocessing later"
},
"typeVersion": 1
},
{
"id": "0df66792-90e8-4802-9e0b-33d46d8f9e0d",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
576,
-544
],
"parameters": {
"color": 5,
"width": 304,
"height": 704,
"content": "## 2) Create Jira ticket\n\nAction: Call Jira API to create ticket\n\nKey Parameters:\n- Project: \n- Type: Story\n- Priority: Mapped to Jira IDs (1-5)\n- Description: Standardized format\n\nOutputs:\n- Ticket key (e.g., TES-503)\n- Ticket URL\n- Creation status\n\nTips\nPriority: Map with the ID"
},
"typeVersion": 1
},
{
"id": "6379b494-5fd6-4795-8310-2b3b28dbf39a",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
-544
],
"parameters": {
"color": 4,
"width": 576,
"height": 704,
"content": "## 3) Update the sheet and send Gmail notification\nAction: Update source row with Jira information\n\nUpdated Fields:\n- jira_key: Ticket reference\n- jira_url: Ticket link\n- status: \"Created\"\n- created_at: Creation timestamp\n\nMatching Mechanism:\n- Use \"Horodateur\" column for row matching\n\n\nAction: Send confirmation email\n\nRecipients: The person who needs to get the notification + eventually the requester\n\nContent:\n- Ticket reference and link\n- Title and priority\n- Creation status\n- Requester information"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "9e5ef1b9-61ec-41c0-bd9a-ae923ff3e582",
"connections": {
"5278e62a-2d6c-4aa5-8621-77e38efd9dc6": {
"main": [
[
{
"node": "ce1d830b-85af-423f-81d1-36089e5ce1ae",
"type": "main",
"index": 0
}
]
]
},
"ce1d830b-85af-423f-81d1-36089e5ce1ae": {
"main": [
[
{
"node": "387f2792-94a0-43ec-b358-a27229c50566",
"type": "main",
"index": 0
}
]
]
},
"f7d9bcc1-d9c2-4844-ab4d-7d9d6b8610c3": {
"main": [
[
{
"node": "5278e62a-2d6c-4aa5-8621-77e38efd9dc6",
"type": "main",
"index": 0
}
]
]
},
"387f2792-94a0-43ec-b358-a27229c50566": {
"main": [
[
{
"node": "5cc9d8ed-dea5-44cc-bc5f-60fcc2a8b464",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Verschiedenes, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Yassin Zehar
@yassinzeharDigital & IT Project Manager | Data-oriented | Agile certified (PSM I, PSPO I) | Paris
Diesen Workflow teilen