Workflow n8n

Automatisation Confluence avec n8n : création de pages dynamiques

Ce workflow n8n permet d'automatiser la création de pages dans Confluence à partir de modèles prédéfinis. Dans un contexte où la documentation collaborative est essentielle, ce processus aide les équipes à gagner du temps et à garantir la cohérence des informations partagées. Les cas d'usage incluent la génération automatique de rapports, la mise à jour de documents standards ou la création de pages de projet. Le workflow commence par un déclencheur Webhook qui reçoit des données, puis utilise le nœud 'Set parameters' pour définir les options nécessaires. Ensuite, il récupère le contenu du modèle via 'Confluence: Get template content'. Après cela, le nœud 'Replace placeholders in template body and title' remplace les éléments dynamiques dans le contenu du modèle. Finalement, 'Confluence: Create page from template' crée la page dans Confluence. Grâce à cette automatisation n8n, les entreprises peuvent réduire les erreurs humaines, améliorer la productivité et assurer une documentation à jour et accessible. Tags clés : automatisation, Confluence, documentation.

Catégorie: Webhook · Tags: automatisation, Confluence, documentation, workflow, n8n0

Vue d'ensemble du workflow n8n

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Détail des nœuds du workflow n8n

  • Confluence: Get template content

    Ce noeud récupère le contenu d'un modèle depuis Confluence via une requête HTTP.

  • Confluence: Create page from template

    Ce noeud crée une page dans Confluence à partir d'un modèle en envoyant une requête HTTP.

  • Sticky Note

    Ce noeud permet d'afficher une note autocollante avec des paramètres personnalisés tels que la couleur et le contenu.

  • Set parameters

    Ce noeud définit des paramètres spécifiques dans le workflow en utilisant des affectations.

  • Replace placeholders in template body and title

    Ce noeud remplace les espaces réservés dans le corps et le titre d'un modèle par des valeurs dynamiques.

  • Webhook

    Ce noeud crée un webhook qui écoute les requêtes HTTP sur un chemin spécifié.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "0000"
  },
  "nodes": [
    {
      "id": "b2015e98-23bf-4bdb-b588-2991ee4d69d5",
      "name": "Confluence: Get template content",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1460,
        660
      ],
      "parameters": {
        "url": "={{ $('Set parameters').item.json.confluence_base_url }}/wiki/rest/api/template/{{ $json.template_id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "wQWJ3gbaDYd4nNIK",
          "name": "Atlassian"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b5b665d6-f92e-43f1-bfd8-5de4155b73d4",
      "name": "Confluence: Create page from template",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1900,
        660
      ],
      "parameters": {
        "url": "={{ $('Set parameters').item.json.confluence_base_url }}/wiki/rest/api/content/",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "type",
              "value": "page"
            },
            {
              "name": "title",
              "value": "={{ $now.format(\"yyyy-MM-dd-HH-mm\") }}-{{ $('Replace placeholders in template body and title').item.json.page_title }}"
            },
            {
              "name": "space",
              "value": "={{ { \"key\" : $('Set parameters').item.json.target_space_key } }}"
            },
            {
              "name": "body",
              "value": "={{ { \"storage\" : { \"value\" : $('Replace placeholders in template body and title').item.json.page_body, \"representation\" : \"storage\" } } }}"
            },
            {
              "name": "ancestors",
              "value": "={{ [{\"type\" : \"page\", \"id\" : $('Set parameters').item.json.target_parent_page_id} ] }}"
            }
          ]
        },
        "genericAuthType": "httpBasicAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "wQWJ3gbaDYd4nNIK",
          "name": "Atlassian"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "571a104e-4112-4898-8e63-08dd8809b328",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1000,
        300
      ],
      "parameters": {
        "color": 2,
        "width": 610,
        "height": 315,
        "content": "## Create Atlassian Confluence page from template\n\nCreates a new page in Confluence from a space template.\n\n### Setup\nAll parameters you need to change are defined in the _Set parameters_ node\nFor detailled setup instructions and explanation how it all works --> [🎥 Video](https://www.tella.tv/video/automate-confluence-page-creation-e994)\n\n### Credentials\nAs the password for the basic auth credential, you need to use an API key. \nDocumentation on those is [here](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).\n[Here's](https://id.atlassian.com/manage-profile/security/api-tokens) where you create and manage Atlassian API keys."
      },
      "typeVersion": 1
    },
    {
      "id": "eac6d0bc-0ea5-4e23-977c-8e06b346ea79",
      "name": "Set parameters",
      "type": "n8n-nodes-base.set",
      "position": [
        1240,
        660
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "01116d20-ddaf-405a-99ec-81197f71cd4f",
              "name": "confluence_base_url",
              "type": "string",
              "value": "https://your-domain.atlassian.net"
            },
            {
              "id": "4a5a8737-5694-40ef-99c5-d5aa4fab1220",
              "name": "template_id",
              "type": "string",
              "value": "834764824"
            },
            {
              "id": "27c1681d-4f44-4b6f-9e6b-6013bfcac6a0",
              "name": "target_space_key",
              "type": "string",
              "value": "~5f5915647187b8006ffffe8e"
            },
            {
              "id": "5de1868b-ee33-4ef4-aa45-0d951b5ce5ff",
              "name": "target_parent_page_id",
              "type": "string",
              "value": "312344667"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c28299ef-8ce7-497f-98d8-356a741f461d",
      "name": "Replace placeholders in template body and title",
      "type": "n8n-nodes-base.code",
      "position": [
        1680,
        660
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "function replacePlaceholders(template, values) {\n    // Regular expression to find placeholders in the format $some.place.holder$\n    const placeholderPattern = /\\$(.*?)\\$/g;\n\n    // Replace function to look up the value from the object\n    return template.replace(placeholderPattern, (match, p1) => {\n        // Split the placeholder into parts by dot notation\n        const keys = p1.split('.');\n        let value = values;\n\n        // Traverse the object based on the dot notation\n        for (const key of keys) {\n            if (value && key in value) {\n                value = value[key];\n            } else {\n                // If the key is not found, return the original placeholder\n                return match;\n            }\n        }\n        // Return the value found in the object\n        return value;\n    });\n}\n\nconst templateTitle = $('Confluence: Get template content').item.json.name;\nconst templateBody = $('Confluence: Get template content').item.json.body.storage.value;\nconst values = $('Webhook').item.json;\n\nconst pageTitle = replacePlaceholders(templateTitle, values); \nconst pageBody = replacePlaceholders(templateBody, values);\n\nreturn { \"page_title\": pageTitle, \"page_body\" :  pageBody};"
      },
      "typeVersion": 2
    },
    {
      "id": "42bbd727-e3ea-4e36-be11-1f7def28f134",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        1020,
        660
      ],
      "webhookId": "d291ef27-c27f-42cf-90cf-4dad7dd71a7c",
      "parameters": {
        "path": "d291ef27-c27f-42cf-90cf-4dad7dd71a7c",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    }
  ],
  "pinData": {
    "Webhook": [
      {
        "user": {
          "name": "Alice",
          "messages": {
            "count": 5
          }
        }
      }
    ]
  },
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Set parameters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set parameters": {
      "main": [
        [
          {
            "node": "Confluence: Get template content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Confluence: Get template content": {
      "main": [
        [
          {
            "node": "Replace placeholders in template body and title",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Replace placeholders in template body and title": {
      "main": [
        [
          {
            "node": "Confluence: Create page from template",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse aux équipes de projet, aux responsables de documentation et aux entreprises qui utilisent Confluence pour la gestion de leurs connaissances. Il est idéal pour les organisations de taille moyenne à grande qui cherchent à optimiser leur processus de documentation sans nécessiter de compétences techniques avancées.

Problème résolu

Ce workflow résout le problème de la création manuelle de pages dans Confluence, qui peut être long et sujet à des erreurs. En automatisant ce processus, il élimine les frustrations liées à la mise à jour des documents et réduit le temps passé à créer des pages. Les utilisateurs peuvent ainsi se concentrer sur des tâches à plus forte valeur ajoutée, tout en garantissant que leur documentation est toujours à jour et conforme aux standards de l'entreprise.

Étapes du workflow

Étape 1 : Le workflow est déclenché par un Webhook qui reçoit les données nécessaires. Étape 2 : Les paramètres sont définis à l'aide du nœud 'Set parameters'. Étape 3 : Le contenu du modèle est récupéré via 'Confluence: Get template content'. Étape 4 : Les espaces réservés dans le corps et le titre du modèle sont remplacés grâce au nœud 'Replace placeholders in template body and title'. Étape 5 : Enfin, la page est créée dans Confluence avec le nœud 'Confluence: Create page from template'.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, commencez par modifier l'URL du Webhook pour l'adapter à votre système. Ensuite, ajustez les paramètres dans le nœud 'Set parameters' pour répondre à vos besoins spécifiques. Vous pouvez également changer l'ID du modèle dans 'Confluence: Get template content' pour utiliser un autre modèle. Assurez-vous que les espaces réservés dans le contenu du modèle correspondent aux données que vous envoyez. Enfin, vérifiez les paramètres d'authentification pour garantir un accès sécurisé à votre instance Confluence.