Google Forms → Créateur d'issues Jira
Ceci est unMiscellaneous, Multimodal AIworkflow d'automatisation du domainecontenant 9 nœuds.Utilise principalement des nœuds comme Code, Jira, Gmail, GoogleSheets, GoogleSheetsTrigger. Créer des tickets Jira à partir de Google Forms, avec mises à jour de tableaux et notifications par e-mail
- •Compte Google et informations d'identification Gmail API
- •Informations d'identification Google Sheets API
Nœuds utilisés (9)
Catégorie
{
"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": "Note adhésive1",
"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": "Déclencheur lors de l'ajout d'une ligne",
"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": "Normaliser les champs",
"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": "Créer un ticket Jira",
"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": "Mettre à jour la feuille Google avec les informations des tickets",
"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": "E-mail de notification",
"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": "Note adhésive",
"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": "Note adhésive2",
"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": "Note adhésive3",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Divers, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Yassin Zehar
@yassinzeharDigital & IT Project Manager | Data-oriented | Agile certified (PSM I, PSPO I) | Paris
Partager ce workflow