Génération de rapports d'analyse de workflow hebdomadaire avec n8n API et envoi par e-mail

Avancé

Ceci est unDevOpsworkflow d'automatisation du domainecontenant 19 nœuds.Utilise principalement des nœuds comme N8n, Set, Code, Gmail, Merge. Générer un rapport hebdomadaire d'analyse de flux de travail avec l'API n8n et l'e-mail

Prérequis
  • Compte Google et informations d'identification Gmail API

Catégorie

Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "89249a8a187ba6e01e16112a0d334a3aa01d510ad8f88d223e12cc0a2a8beb6b"
  },
  "nodes": [
    {
      "id": "9c2f922e-2f23-417f-9e26-f2f91d719728",
      "name": "Déclencheur planifié",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        912,
        16
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "daysInterval": 7
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "ea56ce13-5b66-439c-8241-3c8eecb06eb8",
      "name": "Obtenir toutes les exécutions précédentes",
      "type": "n8n-nodes-base.n8n",
      "position": [
        1824,
        112
      ],
      "parameters": {
        "filters": {},
        "options": {},
        "resource": "execution",
        "returnAll": true,
        "requestOptions": {}
      },
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "22cefb90-bce7-402d-a996-6489bda7c136",
      "name": "Obtenir tous les workflows",
      "type": "n8n-nodes-base.n8n",
      "position": [
        1424,
        -160
      ],
      "parameters": {
        "filters": {},
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "b6395b45-7c15-4ab4-9dc4-905ddf04d54b",
      "name": "Fusionner",
      "type": "n8n-nodes-base.merge",
      "position": [
        2496,
        0
      ],
      "parameters": {
        "mode": "combine",
        "options": {
          "clashHandling": {
            "values": {
              "resolveClash": "preferLast"
            }
          }
        },
        "advanced": true,
        "joinMode": "enrichInput2",
        "mergeByFields": {
          "values": [
            {
              "field1": "workflowId",
              "field2": "workflowId"
            }
          ]
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "8e131881-f7ab-46cf-9ebc-f006a819d66d",
      "name": "Modifier le champ ID en workflowId",
      "type": "n8n-nodes-base.set",
      "position": [
        2160,
        -160
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "474e54af-e79e-4d58-8c11-dbd920f0511c",
              "name": "workflowId",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "12a17b24-b3c7-4d40-8a03-3b84c932521b",
      "name": "Filtrer les exécutions de la semaine dernière",
      "type": "n8n-nodes-base.filter",
      "position": [
        2896,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "31745f1d-793a-4674-80ab-77afede449d6",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json.startedAt }}",
              "rightValue": "={{ DateTime.now().minus({ days: 7 }) }}"
            }
          ]
        }
      },
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "2e18c677-62ae-4228-9aeb-ba665f8d05c8",
      "name": "Préparer le rapport HTML",
      "type": "n8n-nodes-base.code",
      "position": [
        3376,
        0
      ],
      "parameters": {
        "jsCode": "// Calculate the date range (7 days ago to now)\nconst now = new Date();\nconst sevenDaysAgo = new Date(now.getTime() - (7 * 24 * 60 * 60 * 1000));\n\n// Group executions by workflow\nconst workflowStats = {};\n\nfor (const item of $input.all()) {\n  const workflowId = item.json.workflowId;\n  const workflowName = item.json.name;\n  const status = item.json.status;\n  const startedAt = new Date(item.json.startedAt);\n  const stoppedAt = item.json.stoppedAt ? new Date(item.json.stoppedAt) : null;\n  \n  // Calculate runtime in seconds\n  let runtime = 0;\n  if (stoppedAt) {\n    runtime = (stoppedAt - startedAt) / 1000; // Convert to seconds\n  }\n  \n  // Initialize workflow stats if not exists\n  if (!workflowStats[workflowId]) {\n    workflowStats[workflowId] = {\n      name: workflowName,\n      id: workflowId,\n      error: { count: 0, totalRuntime: 0 },\n      success: { count: 0, totalRuntime: 0 },\n      waiting: { count: 0, totalRuntime: 0 }\n    };\n  }\n  \n  // Update counts and runtime based on status\n  if (status === 'error') {\n    workflowStats[workflowId].error.count++;\n    workflowStats[workflowId].error.totalRuntime += runtime;\n  } else if (status === 'success') {\n    workflowStats[workflowId].success.count++;\n    workflowStats[workflowId].success.totalRuntime += runtime;\n  } else if (status === 'waiting') {\n    workflowStats[workflowId].waiting.count++;\n    workflowStats[workflowId].waiting.totalRuntime += runtime;\n  }\n}\n\n// Helper function to format date (without time)\nfunction formatDate(date) {\n  const options = { \n    year: 'numeric', \n    month: 'long', \n    day: 'numeric'\n  };\n  return date.toLocaleDateString('en-US', options);\n}\n\n// Helper function to format runtime\nfunction formatRuntime(seconds) {\n  if (seconds < 60) {\n    return `${seconds.toFixed(2)}s`;\n  } else if (seconds < 3600) {\n    const minutes = Math.floor(seconds / 60);\n    const remainingSeconds = (seconds % 60).toFixed(0);\n    return `${minutes}m ${remainingSeconds}s`;\n  } else {\n    const hours = Math.floor(seconds / 3600);\n    const minutes = Math.floor((seconds % 3600) / 60);\n    return `${hours}h ${minutes}m`;\n  }\n}\n\n// Format date range for header and subject (7 days ago to now)\nconst fromDate = formatDate(sevenDaysAgo);\nconst toDate = formatDate(now);\nconst dateRangeText = `${fromDate} - ${toDate}`;\nconst subject = `n8n Execution Report ${fromDate} - ${toDate}`;\n\n// Build HTML report\nlet html = `\n<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    body {\n      font-family: Arial, sans-serif;\n      margin: 20px;\n      background-color: #f5f5f5;\n    }\n    .header {\n      background-color: white;\n      padding: 20px;\n      margin-bottom: 20px;\n      border-radius: 8px;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n    }\n    h1 {\n      color: #333;\n      margin: 0 0 10px 0;\n    }\n    .date-range {\n      color: #666;\n      font-size: 1.1em;\n      margin: 10px 0;\n    }\n    .summary {\n      display: flex;\n      gap: 20px;\n      margin-top: 15px;\n    }\n    .summary-item {\n      padding: 10px 15px;\n      border-radius: 4px;\n      font-weight: bold;\n    }\n    .summary-error {\n      background-color: #ffebee;\n      color: #c62828;\n    }\n    .summary-success {\n      background-color: #e8f5e9;\n      color: #2e7d32;\n    }\n    .summary-waiting {\n      background-color: #fff3e0;\n      color: #ef6c00;\n    }\n    table {\n      width: 100%;\n      border-collapse: collapse;\n      background-color: white;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n      border-radius: 8px;\n      overflow: hidden;\n    }\n    th {\n      background-color: #4CAF50;\n      color: white;\n      padding: 12px;\n      text-align: left;\n      font-weight: bold;\n    }\n    td {\n      padding: 10px 12px;\n      border-bottom: 1px solid #ddd;\n    }\n    tr:hover {\n      background-color: #f5f5f5;\n    }\n    .workflow-name {\n      font-weight: bold;\n      color: #333;\n    }\n    .workflow-id {\n      color: #666;\n      font-size: 0.9em;\n      display: block;\n      margin-top: 4px;\n    }\n    .status-cell {\n      text-align: center;\n    }\n    .status-badge {\n      display: inline-block;\n      padding: 4px 8px;\n      border-radius: 4px;\n      font-size: 0.85em;\n      font-weight: bold;\n      margin-bottom: 4px;\n    }\n    .error { background-color: #ffebee; color: #c62828; }\n    .success { background-color: #e8f5e9; color: #2e7d32; }\n    .waiting { background-color: #fff3e0; color: #ef6c00; }\n    .runtime {\n      font-size: 0.8em;\n      color: #666;\n      display: block;\n      margin-top: 2px;\n    }\n    .no-data {\n      color: #999;\n      font-style: italic;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"header\">\n    <h1>n8n Execution Report</h1>\n    <div class=\"date-range\">\n      <strong>Period:</strong> ${dateRangeText}\n    </div>\n`;\n\n// Calculate totals for summary\nlet totalError = 0;\nlet totalSuccess = 0;\nlet totalWaiting = 0;\n\nfor (const workflowId in workflowStats) {\n  const stats = workflowStats[workflowId];\n  totalError += stats.error.count;\n  totalSuccess += stats.success.count;\n  totalWaiting += stats.waiting.count;\n}\n\nhtml += `\n    <div class=\"summary\">\n      <div class=\"summary-item summary-error\">\n        ✗ ${totalError} Errors\n      </div>\n      <div class=\"summary-item summary-success\">\n        ✓ ${totalSuccess} Success\n      </div>\n      <div class=\"summary-item summary-waiting\">\n        ⏳ ${totalWaiting} Waiting\n      </div>\n    </div>\n  </div>\n  \n  <table>\n    <thead>\n      <tr>\n        <th>Workflow</th>\n        <th class=\"status-cell\">Error</th>\n        <th class=\"status-cell\">Success</th>\n        <th class=\"status-cell\">Waiting</th>\n      </tr>\n    </thead>\n    <tbody>\n`;\n\n// Add rows for each workflow\nfor (const workflowId in workflowStats) {\n  const stats = workflowStats[workflowId];\n  \n  html += `\n      <tr>\n        <td>\n          <span class=\"workflow-name\">${stats.name}</span>\n          <span class=\"workflow-id\">${stats.id}</span>\n        </td>\n  `;\n  \n  // Error column\n  html += '<td class=\"status-cell\">';\n  if (stats.error.count > 0) {\n    const avgRuntime = stats.error.totalRuntime / stats.error.count;\n    html += `\n      <span class=\"status-badge error\">✗ ${stats.error.count}</span>\n      <span class=\"runtime\">Avg: ${formatRuntime(avgRuntime)}</span>\n      <span class=\"runtime\">Total: ${formatRuntime(stats.error.totalRuntime)}</span>\n    `;\n  } else {\n    html += '<span class=\"no-data\">-</span>';\n  }\n  html += '</td>';\n  \n  // Success column\n  html += '<td class=\"status-cell\">';\n  if (stats.success.count > 0) {\n    const avgRuntime = stats.success.totalRuntime / stats.success.count;\n    html += `\n      <span class=\"status-badge success\">✓ ${stats.success.count}</span>\n      <span class=\"runtime\">Avg: ${formatRuntime(avgRuntime)}</span>\n      <span class=\"runtime\">Total: ${formatRuntime(stats.success.totalRuntime)}</span>\n    `;\n  } else {\n    html += '<span class=\"no-data\">-</span>';\n  }\n  html += '</td>';\n  \n  // Waiting column\n  html += '<td class=\"status-cell\">';\n  if (stats.waiting.count > 0) {\n    const avgRuntime = stats.waiting.totalRuntime / stats.waiting.count;\n    html += `\n      <span class=\"status-badge waiting\">⏳ ${stats.waiting.count}</span>\n      <span class=\"runtime\">Avg: ${formatRuntime(avgRuntime)}</span>\n      <span class=\"runtime\">Total: ${formatRuntime(stats.waiting.totalRuntime)}</span>\n    `;\n  } else {\n    html += '<span class=\"no-data\">-</span>';\n  }\n  html += '</td>';\n  \n  html += '</tr>';\n}\n\nhtml += `\n    </tbody>\n  </table>\n</body>\n</html>\n`;\n\nreturn [{ json: { html: html, subject: subject } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "4b1154e2-76bc-4b8c-a2b6-f4338a3c3f10",
      "name": "Envoyer un message gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        3792,
        -176
      ],
      "webhookId": "c0581cd3-0b50-4ed9-844d-2e4c7af1b30a",
      "parameters": {
        "message": "={{ $json.html }}",
        "options": {},
        "subject": "={{ $json.subject }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "2946c6b2-f93f-4e31-bca1-14995de72e7d",
      "name": "Envoyer un message Outlook",
      "type": "n8n-nodes-base.microsoftOutlook",
      "position": [
        3792,
        96
      ],
      "webhookId": "87fa1111-29bb-471d-b68f-ae35f785dc6f",
      "parameters": {
        "subject": "={{ $json.subject }}",
        "bodyContent": "={{ $json.html }}",
        "additionalFields": {
          "bodyContentType": "html"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0faa8265-c32e-479f-873d-c603722afe12",
      "name": "Note - Aperçu",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        -160
      ],
      "parameters": {
        "color": 3,
        "width": 600,
        "height": 1020,
        "content": "## Workflow Overview for Documenting n8n Executions\n\n### Goal:\nThis workflow automates the process of documenting all previous workflow executions within n8n. By fetching data on past executions and workflows, it generates a comprehensive report that can be sent via email. This helps users keep track of their automation tasks and assess performance efficiently.\n\n### How it works:\n- 🕑 **Schedule Trigger**: Initiates the workflow at defined intervals.\n- 🔄 **Get All Previous Executions**: Fetches logs of past executions from n8n.\n- 📄 **Get All Workflows**: Retrieves current workflows set up in the environment.\n- 🔗 **Merge**: Combines data from previous executions and workflows for comprehensive analysis.\n- 🏷️ **Edit Field ID to workflowId**: Updates specific identifiers to ensure correct mapping.\n- 🔎 **Filter Executions Last Week**: Filters data to only include executions from the last week.\n- 📝 **Prepare HTML Report**: Formats the filtered data into a structured HTML report.\n- 📧 **Send a Message via Gmail & Outlook**: Delivers the report to users' email accounts for easy access.\n\n### Parameters to configure:\n- 🕑 **Schedule settings**: Specify the frequency of the trigger.\n- ✉️ **Email configurations**: Set Gmail and Outlook authentication details for message delivery.\n\n### Limitations / Gotchas:\n- 📅 Ensure the schedule does not overlap with high load times.\n- 🔒 Check permissions for accessing previous executions data.\n\n### Expected result:\nUsers receive an HTML report in their inbox summarizing workflow executions from the past week, facilitating performance tracking and documentation.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "595171e1-c6b0-48b8-bf86-86ffb155e118",
      "name": "Note - Envoyer un message gmail",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3664,
        -1056
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 860,
        "content": "## 📧 Send a message Gmail \n\n### Purpose\nSend an email using Gmail service with specified subject and message content.\n\n### Inputs / Outputs\n- **Inputs:** \n  - Subject: The title of the email.\n  - Message: The main body content of the email in HTML format.\n- **Outputs:** \n  - Confirmation of the email sent or error details if the process fails.\n\n### Key Fields to Configure\n- **Subject:** \n  - Set using the expression `={{ $json.subject }}`, allowing dynamic subject lines based on input data.\n- **Message:** \n  - Set using the expression `={{ $json.html }}`, allowing HTML formatted content for the email body.\n  \n### Tip / Validation\n- Ensure that Gmail OAuth2 credentials are correctly configured and authorized for sending emails.\n- Check the formatting of the HTML content to ensure proper rendering in the recipient's email client.\n- This node is currently **disabled**; enable it for functionality.\n- Remember to handle potential API errors and response codes from Gmail when sending messages."
      },
      "typeVersion": 1
    },
    {
      "id": "7a12b760-b67c-47ff-995c-6ac53194a036",
      "name": "Note - Envoyer un message Outlook",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3680,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## 📩 Send a message outlook \n\n### Purpose\nSend an email through Microsoft Outlook to specified recipients, integrating with workflows for communication purposes.\n\n### Inputs / Outputs\n- **Inputs:** \n  - Recipients' email address (e.g., `wessel@bulte.org`).\n  - Email subject and body content (HTML format).\n- **Outputs:**\n  - Confirmation that the message was sent successfully.\n\n### Key Fields to Configure\n- **toRecipients:** \n  - Email addresses of the recipients. \n- **subject:** \n  - Subject line of the email. Can use dynamic values (e.g., `\"={{ $json.subject }}\"`).\n- **bodyContent:** \n  - Main content of the email, formatted as HTML (e.g., `\"={{ $json.html }}\"`).\n- **bodyContentType:** \n  - Default is set to `\"html\"` to ensure proper formatting.\n\n### Tip / Validation\n- Verify that the email address provided in `toRecipients` is valid to avoid delivery failures.\n- Ensure the subject and body contain meaningful content for better communication.\n- Check that the OAuth credentials for Microsoft Outlook are correctly configured to avoid authentication errors."
      },
      "typeVersion": 1
    },
    {
      "id": "a85a215d-c1ef-4695-b965-9d3a56cfd9b1",
      "name": "Note - Préparer le rapport HTML",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3248,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## 📁 Prepare HTML Report \n\n### Purpose\nGenerate an HTML report summarizing workflow execution statistics over the past 7 days, including counts of errors, successes, and waiting workflows.\n\n### Inputs / Outputs\n- **Inputs:** \n  - Data from previous nodes containing execution records with fields like `workflowId`, `name`, `status`, `startedAt`, and `stoppedAt`.\n- **Outputs:** \n  - An HTML string containing the formatted report and an email subject line for reference.\n\n### Key Operations\n- **Date Range Calculation:**\n  - Retrieves execution data from the last 7 days.\n  \n- **Statistics Grouping:**\n  - Aggregates execution counts and total runtimes by workflow status (error, success, waiting).\n\n- **HTML Report Construction:**\n  - Builds a styled HTML document that visually represents workflow execution statistics, including a summary and detailed table format."
      },
      "typeVersion": 1
    },
    {
      "id": "d134b4f0-1fbc-404c-9edc-9f2884824226",
      "name": "Note - Filtrer les exécutions de la semaine dernière",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2848,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## Filter Executions Last Week\n\n### Purpose\nFilter out executions that were started in the last week, allowing for targeted analysis and documentation of recent workflow activities.\n\n### Inputs / Outputs\n- **Inputs:** \n  - Workflow execution data including start date (`startedAt`).\n- **Outputs:** \n  - Filtered data of executions that occurred within the past week.\n\n### Key Fields to Configure\n- **Conditions:** \n  - Uses a single condition to check if the `startedAt` date is after the date that was exactly 7 days prior to the current date.\n  - **Operator:** \n    - Type: `dateTime`\n    - Operation: `after`\n  - **Left Value:** \n    - `={{ $json.startedAt }}`\n  - **Right Value:**\n    - `={{ DateTime.now().minus({ days: 7 }) }}`\n\n### Tip / Validation\n- Ensure the `startedAt` date formatted correctly (ISO 8601 is recommended) for accurate filtering.\n- Remember that the comparison is case-sensitive due to the option `caseSensitive: true`. Adjust if necessary for your context.\n- This node does not always output data; ensure downstream nodes handle the absence of expected data gracefully."
      },
      "typeVersion": 1
    },
    {
      "id": "d6d8301c-b2f7-4e8b-b3ed-f32edd84c92b",
      "name": "Note - Fusionner",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2448,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## Merge \n\n### Purpose\nCombine two data sets based on specified fields to enrich the input with additional information.\n\n### Inputs / Outputs\n- **Inputs:** \n  - Two data sets to be merged, identified by the `workflowId` field.\n- **Outputs:** \n  - A single data set that merges the attributes of both inputs according to the defined merging strategy.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "95f22f9d-86fa-4cc3-aeba-38d90320ca29",
      "name": "Note - Modifier le champ ID en workflowId",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2064,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## Edit Field ID to workflowId \n\n### Purpose\nThis node updates the field ID in the provided JSON data to a new key named `workflowId`, streamlining the data structure for easier identification and reference.\n\n### Inputs / Outputs\n- **Inputs:** \n  - JSON data containing an `id` field to be transformed into `workflowId`.\n- **Outputs:** \n  - Modified JSON data with the `workflowId` field instead of the original `id`.\n\n### Key Fields to Configure\n- **Assignments:**\n  - **ID:** Unique identifier for the newly created field.\n  - **Name:** Set to `workflowId` to reflect the new key.\n  - **Value:** Expression `={{ $json.id }}` to extract the original `id` value.\n\n### Tip / Validation\n- Ensure the original JSON contains the `id` field for successful transformation; otherwise, the output may not reflect the desired structure.\n- Use the `includeOtherFields` option to retain additional fields during the transformation process."
      },
      "typeVersion": 1
    },
    {
      "id": "9be4bac7-d68a-47d8-87c5-99df34830f13",
      "name": "Note - Obtenir toutes les exécutions précédentes",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## Get All Previous Executions \n\n### Purpose\nRetrieve all previous executions of a specified resource, enabling users to track and document the history of actions performed in workflows.\n\n### Inputs / Outputs\n- **Inputs:** \n  - None required; the node automatically fetches all previous executions.\n- **Outputs:** \n  - A list of previous execution records, which can be used for analysis or logging purposes.\n\n### Key Fields to Configure\n- **Resource:**\n  - Set to `execution` to specify that the node is fetching execution records.\n- **Return All:**\n  - Set to `true` to ensure all previous executions are retrieved.\n- **Filters:** \n  - Can be customized to narrow down results based on specific criteria (currently empty).\n- **Options & Request Options:** \n  - Additional configurations can be added if necessary (currently empty).\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9946f889-e6c4-46e0-bd6e-b5fe41a6e991",
      "name": "Note - Obtenir tous les workflows",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## Get all Workflows \n\n### Purpose\nFetch all workflows stored in n8n to facilitate documentation and management of automation processes.\n\n### Inputs / Outputs\n- **Inputs:** \n  - None (The node retrieves all workflows without needing specific parameters).\n- **Outputs:** \n  - A list of all available workflows, including their metadata (IDs, names, etc.).\n\n### Key Fields to Configure\n- **Filters:** \n  - Currently configured as empty (no specific filters are set).\n- **Request Options:** \n  - Also currently empty, allowing for default request behavior.\n\n### Tip / Validation\n- Make sure you have the appropriate permissions set in your n8n account to access workflow data.\n- This node may return a large dataset if numerous workflows exist, so consider handling the response efficiently to avoid performance issues."
      },
      "typeVersion": 1
    },
    {
      "id": "27a53d26-b49c-41f9-9cde-49c81e3a5454",
      "name": "Note - Déclencheur planifié",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 1020,
        "content": "## 🗓️ Schedule Trigger \n\n### Purpose\nThis node initiates a scheduled trigger, allowing workflows to run at specified intervals."
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "b6395b45-7c15-4ab4-9dc4-905ddf04d54b": {
      "main": [
        [
          {
            "node": "12a17b24-b3c7-4d40-8a03-3b84c932521b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9c2f922e-2f23-417f-9e26-f2f91d719728": {
      "main": [
        [
          {
            "node": "ea56ce13-5b66-439c-8241-3c8eecb06eb8",
            "type": "main",
            "index": 0
          },
          {
            "node": "22cefb90-bce7-402d-a996-6489bda7c136",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "22cefb90-bce7-402d-a996-6489bda7c136": {
      "main": [
        [
          {
            "node": "8e131881-f7ab-46cf-9ebc-f006a819d66d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2e18c677-62ae-4228-9aeb-ba665f8d05c8": {
      "main": [
        [
          {
            "node": "2946c6b2-f93f-4e31-bca1-14995de72e7d",
            "type": "main",
            "index": 0
          },
          {
            "node": "4b1154e2-76bc-4b8c-a2b6-f4338a3c3f10",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8e131881-f7ab-46cf-9ebc-f006a819d66d": {
      "main": [
        [
          {
            "node": "b6395b45-7c15-4ab4-9dc4-905ddf04d54b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "12a17b24-b3c7-4d40-8a03-3b84c932521b": {
      "main": [
        [
          {
            "node": "2e18c677-62ae-4228-9aeb-ba665f8d05c8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ea56ce13-5b66-439c-8241-3c8eecb06eb8": {
      "main": [
        [
          {
            "node": "b6395b45-7c15-4ab4-9dc4-905ddf04d54b",
            "type": "main",
            "index": 1
          }
        ]
      ]
    }
  }
}
Foire aux questions

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é ?

Avancé - DevOps

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.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds19
Catégorie1
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Wessel Bulte

Wessel Bulte

@uuessel

Cybersecurity and automation consultant specializing in n8n workflows for GDPR compliance, process optimization, and business integration. Helping teams streamline operations with secure, scalable automation solutions.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34