Google Forms → Jira Issue-Ersteller

Fortgeschritten

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

Voraussetzungen
  • Google-Konto + Gmail API-Anmeldedaten
  • Google Sheets API-Anmeldedaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "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
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

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.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes9
Kategorie2
Node-Typen6
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
Yassin Zehar

Yassin Zehar

@yassinzehar

Digital & IT Project Manager | Data-oriented | Agile certified (PSM I, PSPO I) | Paris

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34