Envoi d'e-mails pour nouveaux prospects depuis Google Sheets via Outlook à des heures programmées

Intermédiaire

Ceci est uncontenant 9 nœuds.Utilise principalement des nœuds comme Filter, GoogleSheets, ScheduleTrigger, MicrosoftOutlook. Envoi automatisé de courriels aux nouvelles pistes depuis Google Sheets via Outlook à intervalles réguliers

Prérequis
  • Informations d'identification Google Sheets 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": "ad0113c344ee237399e44e9f11798b05baeb83a6196d514a9ae9d2ad71c3b5c9",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "425810c5-874c-41db-8fdd-59450e7f280e",
      "name": "Envoyer un message",
      "type": "n8n-nodes-base.microsoftOutlook",
      "position": [
        -784,
        9472
      ],
      "webhookId": "028da3bf-3bd3-4c4f-883a-4e0f18c67f81",
      "parameters": {
        "subject": "Build AI Agents & Automations with n8n",
        "bodyContent": "Hi There,\n\nI help people learn how to build AI agents and create powerful AI automations using n8n. If you’re exploring ways to save time or scale your workflows, I’d love to share what’s possible.\n\nYou can check out my n8n Creator profile here with 70+ ready-to-use automations:\n👉 https://n8n.io/creators/rbreen\n\nIf you’d like help getting started or want to see what AI + n8n can do for your business, just reply to this email.\n\nBest,\nRobert Breen\n📞 +1 814-882-1293\n🔗 https://www.linkedin.com/in/robert-breen-29429625/",
        "toRecipients": "={{ $json.Email }}",
        "additionalFields": {}
      },
      "credentials": {
        "microsoftOutlookOAuth2Api": {
          "id": "9z1nG9ReKLXU309r",
          "name": "Microsoft Outlook account 4"
        }
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "e84f0281-eb13-4afa-b831-eae6f1a5cf54",
      "name": "Déclencheur programmé",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2416,
        9072
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1d3ef656-0288-45c2-8b82-a9aa7b57e2b0",
      "name": "Obtenir une ou plusieurs lignes dans sheet3",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2080,
        9232
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU/edit?usp=drivesdk",
          "cachedResultName": "New Leads"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "HlBW2puZbuCCq8jJ",
          "name": "Google Sheets account 3"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "7fa47640-1e65-491d-9457-ef32d0b7f600",
      "name": "Filtre1",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1744,
        9088
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "914418a9-8c96-4959-abb7-ad3bb52f420d",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Contacted }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3b4a33f6-c810-4dcb-9b19-3abc6b982e9f",
      "name": "Ajouter ou mettre à jour une ligne dans sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1312,
        8736
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.Email }}",
            "Contacted": "Yes"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contacted",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Contacted",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Created",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Created",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14T6rilaOl1LBTwNnu7ILE3T1equWOz0noI-OIUaI3zU/edit#gid=0",
          "cachedResultName": "leads"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "14T6rilaOl1LBTwNnu7ILE3T1equWOz0noI-OIUaI3zU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14T6rilaOl1LBTwNnu7ILE3T1equWOz0noI-OIUaI3zU/edit?usp=drivesdk",
          "cachedResultName": "New Leads - Real"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "HlBW2puZbuCCq8jJ",
          "name": "Google Sheets account 3"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "65e19508-beb8-4b3d-8ec8-55093f437fd5",
      "name": "Note adhésive58",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2688,
        8576
      ],
      "parameters": {
        "color": 7,
        "width": 2144,
        "height": 1056,
        "content": "## Email new leads from Google Sheets via Outlook on a schedule\n\nSend a templated outreach email to **new leads** in a Google Sheet on a **daily schedule**, then **mark each lead as contacted** so they won’t be emailed twice. Built with: **Schedule Trigger → Google Sheets → Filter → Outlook Send Email → Google Sheets (append/update)**.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6736dbfa-79fc-4aa6-9890-5b60b3b98cd1",
      "name": "Note adhésive6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3120,
        8576
      ],
      "parameters": {
        "width": 400,
        "height": 1056,
        "content": "## How to set up\n### 1) Google Sheets (OAuth2)\n- In **n8n → Credentials → New → Google Sheets (OAuth2)**, sign in and grant access.  \n- In **Get rows**: select your **Lead Source** sheet (e.g., “New Leads”).  \n- In **Append/Update**: select the sheet you want to mark as contacted (can be the same sheet or a CRM sheet).  \n- Make sure your sheet has at least: `Email`, `Contacted` (blank for new).\n\n### 2) Outlook (Microsoft Graph) OAuth2\n- **n8n Cloud (quick connect):**  \n  - In **Credentials → New → Microsoft Outlook OAuth2**, choose **Connect**, sign in with your Microsoft account, and accept permissions.\n- **Self-hosted (Azure App Registration):**  \n  1) Azure Portal → **App registrations** → **New registration**.  \n  2) Add redirect URL: `https://YOUR_N8N_URL/rest/oauth2-credential/callback`.  \n  3) **API permissions (Delegated):** `offline_access`, `Mail.Send`, `User.Read`. Grant admin consent if required.  \n  4) Create a **Client secret**; copy **Application (client) ID** and **Directory (tenant) ID**.  \n  5) In n8n, create **Microsoft Outlook OAuth2** credential with those values and scopes: `offline_access Mail.Send openid email profile`.  \n- In the **Send a message** node, select that credential and keep `To` mapped to `{{$json.Email}}`.  \n- Customize **Subject** and **Body** to your brand (default provided).\n\n---\n\n\n- 📧 **rbreen@ynteractive.com**  \n- 🔗 **Robert Breen** — https://www.linkedin.com/in/robert-breen-29429625/  \n- 🌐 **ynteractive.com** — https://ynteractive.com\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "79a41cd6-d72f-4cd5-81a2-3341a21ceeb8",
      "name": "Note adhésive70",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2144,
        8784
      ],
      "parameters": {
        "color": 3,
        "width": 224,
        "height": 656,
        "content": "### 1) Connect Google Sheets (OAuth2)\n1. In **n8n → Credentials → New → Google Sheets (OAuth2)**  \n2. Sign in with your Google account and grant access  \n3. In each Google Sheets node, select your **Spreadsheet** and the appropriate **Worksheet**:  \n\n\nhttps://docs.google.com/spreadsheets/d/1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU/edit#gid=0"
      },
      "typeVersion": 1
    },
    {
      "id": "49825745-adc3-4a5e-ba1c-0a65e31fd177",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        8608
      ],
      "parameters": {
        "color": 3,
        "height": 992,
        "content": "### 2) Outlook (Microsoft Graph) OAuth2\n- **n8n Cloud (quick connect):**  \n  - In **Credentials → New → Microsoft Outlook OAuth2**, choose **Connect**, sign in with your Microsoft account, and accept permissions.\n- **Self-hosted (Azure App Registration):**  \n  1) Azure Portal → **App registrations** → **New registration**.  \n  2) Add redirect URL: `https://YOUR_N8N_URL/rest/oauth2-credential/callback`.  \n  3) **API permissions (Delegated):** `offline_access`, `Mail.Send`, `User.Read`. Grant admin consent if required.  \n  4) Create a **Client secret**; copy **Application (client) ID** and **Directory (tenant) ID**.  \n  5) In n8n, create **Microsoft Outlook OAuth2** credential with those values and scopes: `offline_access Mail.Send openid email profile`.  \n- In the **Send a message** node, select that credential and keep `To` mapped to `{{$json.Email}}`.  \n- Customize **Subject** and **Body** to your brand (default provided).\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "7fa47640-1e65-491d-9457-ef32d0b7f600": {
      "main": [
        [
          {
            "node": "3b4a33f6-c810-4dcb-9b19-3abc6b982e9f",
            "type": "main",
            "index": 0
          },
          {
            "node": "425810c5-874c-41db-8fdd-59450e7f280e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e84f0281-eb13-4afa-b831-eae6f1a5cf54": {
      "main": [
        [
          {
            "node": "1d3ef656-0288-45c2-8b82-a9aa7b57e2b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1d3ef656-0288-45c2-8b82-a9aa7b57e2b0": {
      "main": [
        [
          {
            "node": "7fa47640-1e65-491d-9457-ef32d0b7f600",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
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é ?

Intermédiaire

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é
Intermédiaire
Nombre de nœuds9
Catégorie-
Types de nœuds5
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur
Robert Breen

Robert Breen

@rbreen

Professional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34