8
n8n 中文网amn8n.com

Google表单每日摘要发送至邮箱

中级

这是一个Personal Productivity, Multimodal AI领域的自动化工作流,包含 6 个节点。主要使用 Code, Gmail, GoogleSheetsTrigger 等节点。 整合每日Google表单提交内容,生成Gmail摘要

前置要求
  • Google 账号和 Gmail API 凭证
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "4PkzGnVzhzmFcQas",
  "meta": {
    "instanceId": "b7b2db9d6a461f902b25d685e4550cab3c88fcbb3254a8654e06246b67e4ff5c",
    "templateCredsSetupCompleted": true
  },
  "name": "Google Form Daily Recap to Email",
  "tags": [
    {
      "id": "5iQR5Cw05Bzz7Aqt",
      "name": "Google",
      "createdAt": "2025-08-02T17:36:32.751Z",
      "updatedAt": "2025-08-02T17:36:32.751Z"
    },
    {
      "id": "PlBq4GrfRsEhR6mN",
      "name": "google form",
      "createdAt": "2025-08-14T09:57:38.641Z",
      "updatedAt": "2025-08-14T09:57:38.641Z"
    },
    {
      "id": "S94PaeZJiPKn5Ei9",
      "name": "gmail",
      "createdAt": "2025-08-14T09:57:18.678Z",
      "updatedAt": "2025-08-14T09:57:18.678Z"
    },
    {
      "id": "Unbn35P90TtJuAQC",
      "name": "email",
      "createdAt": "2025-08-14T09:57:13.394Z",
      "updatedAt": "2025-08-14T09:57:13.394Z"
    },
    {
      "id": "h2TBJOs7feXDIfbL",
      "name": "google sheet",
      "createdAt": "2025-08-14T09:57:22.041Z",
      "updatedAt": "2025-08-14T09:57:22.041Z"
    },
    {
      "id": "rYuINsb3Y1XjrgNv",
      "name": "Productivity",
      "createdAt": "2025-08-02T17:36:49.812Z",
      "updatedAt": "2025-08-02T17:36:49.812Z"
    }
  ],
  "nodes": [
    {
      "id": "1c6d9187-1442-4098-a300-11b22e1183c2",
      "name": "Sum up email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1040,
        0
      ],
      "webhookId": "d376e469-4595-4972-9d58-ef4bbb1e7982",
      "parameters": {
        "sendTo": "email",
        "message": "={{$json.html}}",
        "options": {},
        "subject": "The requests you received today"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "88G2Fa5bxsnrjAYu",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b619b991-d0cd-41be-84f8-3e2a0db82fea",
      "name": "Trigger data for new row",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        416,
        0
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {
          "dataLocationOnSheet": {
            "values": {
              "range": "A1:Z1000",
              "rangeDefinition": "specifyRangeA1"
            }
          }
        },
        "pollTimes": {
          "item": [
            {
              "hour": 17
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "id"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "url"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "id": "3Ibd0h6fDr3TCJ1v",
          "name": "Google Sheets Trigger account"
        }
      },
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "0ca891c0-477f-4f23-918e-73b016f2c3b7",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -304
      ],
      "parameters": {
        "color": 3,
        "content": "## Required\n\n\n- Google account\n- Google Form\n- Google Sheet linked to the form"
      },
      "typeVersion": 1
    },
    {
      "id": "25843c2b-29e3-4bcd-8922-f25f8f903200",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        -304
      ],
      "parameters": {
        "color": 2,
        "width": 416,
        "height": 848,
        "content": "## 1.Workflow trigger et data gathering\n\nThe workflow is **triggered automatically** everyday at 5pm. \n\nHow to setup:\n- Set up your Google form and link it to a google sheet\n- link the google sheet to this workflow"
      },
      "typeVersion": 1
    },
    {
      "id": "804f4951-61b5-4fa1-a959-66a92ce525b5",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        -304
      ],
      "parameters": {
        "color": 4,
        "width": 560,
        "height": 848,
        "content": "## 2. Send the email\n\nThe code node, will create the message and gather all the informations wanted about the row added during the day and will list them (row newly added). So a full sum um will be sent in one message only.\n\n\nHow to setup:\n- Connect with your Gmail account credentials."
      },
      "typeVersion": 1
    },
    {
      "id": "d889b4e6-7b66-4272-92a1-406771c5803b",
      "name": "Generate the email",
      "type": "n8n-nodes-base.code",
      "position": [
        832,
        0
      ],
      "parameters": {
        "jsCode": "const rows = $input.all().map(i => i.json);\n\n// helper: get eh first existing key\nconst pick = (obj, keys) => {\n  for (const k of keys) if (k in obj && obj[k] != null && obj[k] !== '') return obj[k];\n  return undefined;\n};\n\nconst categories = {};\nfor (const row of rows) {\n  const category = pick(row, ['Catégorie', 'Category']) || 'Non classé';\n  const question = pick(row, ['Question', 'Please write your request', 'Please write your re', 'Request', 'Message']) || '(no question)';\n  const from     = pick(row, ['Nom', 'Name', 'Full Name', 'Adresse e-mail', 'Email Address', 'Email']) || 'Anonymous';\n\n  if (!categories[category]) categories[category] = [];\n  categories[category].push({ question, from });\n}\n\nlet html = `<h2>📬 Questions of the day received (${rows.length})</h2>`;\nfor (const [cat, items] of Object.entries(categories)) {\n  html += `<h3>${cat} (${items.length})</h3><ul>`;\n  for (const it of items) {\n    html += `<li><strong>${it.from}</strong><br>${it.question}</li>`;\n  }\n  html += `</ul>`;\n}\n\nreturn [{ json: { html, count: rows.length } }];\n"
      },
      "typeVersion": 2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0eeda259-9205-4ec9-8dcb-f39e515f579a",
  "connections": {
    "Generate the email": {
      "main": [
        [
          {
            "node": "Sum up email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger data for new row": {
      "main": [
        [
          {
            "node": "Generate the email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级 - 个人效率, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量6
分类2
节点类型4
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Yassin Zehar

Yassin Zehar

@yassinzehar

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

外部链接
在 n8n.io 查看

分享此工作流