从Google Sheets自动生成AI驱动的商业提案到Google Docs
高级
这是一个Document Extraction, Multimodal AI领域的自动化工作流,包含 16 个节点。主要使用 Code, GoogleDocs, GoogleDrive, Agent, GoogleSheetsTrigger 等节点。 使用GPT-4o、Google Sheets和Google Docs生成商业提案
前置要求
- •Google Drive API 凭证
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (16)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "Lim9HD2pvEN6vAIe",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "从Google Sheets自动生成AI驱动的商业提案到Google Docs",
"tags": [],
"nodes": [
{
"id": "27862039-1480-43c0-a29b-e96940aad676",
"name": "工作流概览",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1440,
-224
],
"parameters": {
"color": 5,
"width": 386,
"height": 576,
"content": "## 🎯 AI驱动的提案生成器工作流"
},
"typeVersion": 1
},
{
"id": "370827ff-0b85-4489-92bc-23dbc5182112",
"name": "触发器说明",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1040,
-272
],
"parameters": {
"width": 280,
"height": 288,
"content": "## 📥 步骤1:触发器设置"
},
"typeVersion": 1
},
{
"id": "1393c26b-8979-4df5-b577-55f54f4d6517",
"name": "数据过滤指南",
"type": "n8n-nodes-base.stickyNote",
"position": [
-784,
176
],
"parameters": {
"width": 280,
"height": 232,
"content": "## 🔄 步骤2:数据处理"
},
"typeVersion": 1
},
{
"id": "5cccf135-cd79-4a6c-a286-f9cd41a9367b",
"name": "AI组件指南",
"type": "n8n-nodes-base.stickyNote",
"position": [
-416,
-352
],
"parameters": {
"width": 320,
"height": 364,
"content": "## 🤖 步骤3:AI生成"
},
"typeVersion": 1
},
{
"id": "76079566-7068-4264-902f-4972027a4b04",
"name": "文档设置指南",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
208
],
"parameters": {
"width": 300,
"height": 432,
"content": "## 📝 步骤4:文档填充"
},
"typeVersion": 1
},
{
"id": "4c21284b-9934-48d5-9c24-f6f966c907aa",
"name": "文件操作指南",
"type": "n8n-nodes-base.stickyNote",
"position": [
352,
-304
],
"parameters": {
"width": 280,
"height": 320,
"content": "## 💾 步骤5:文件管理"
},
"typeVersion": 1
},
{
"id": "6701d2dc-21f8-418a-96ce-77fe5941e956",
"name": "记忆:客户上下文",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-288,
256
],
"parameters": {
"sessionKey": "=\"proposal_\" + $('Trigger: New Sheet Row').item.json.clientName",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "464cf18b-ed47-41a4-8075-5b0aee4c1ff2",
"name": "AI代理:生成提案",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-368,
32
],
"parameters": {
"text": "=Job Description:\n{{ $json.jobDescription }}\n\nClient Name:\n{{ $json.clientName }}\n\nTask:\nGenerate a complete, professional business proposal for {{ $json.clientName }} based on the job description above.\n\nRequirements:\n✓ Analyze the job requirements carefully\n✓ Create a tailored executive summary (150-250 words)\n✓ Develop 4-6 detailed scope of work sections with specific deliverables\n✓ Provide realistic 4-month cost breakdown in INR (format: ₹XX,XXX)\n✓ Include implementation timeline description\n✓ Write a professional conclusion with contact details\n\nGenerate the proposal content now in the exact JSON format specified.",
"options": {
"systemMessage": "=You are an expert proposal writer for [YOUR COMPANY NAME].\n\nYou will generate complete, professional proposal content for a Google Docs template.\n\nThe Google Doc has these sections:\n- Executive Summary\n- Scope Of Work\n- Costing (table format)\n- Timeline\n- Conclusion\n\nStyle Guidelines:\n✓ Professional, confident, and persuasive tone\n✓ Clear and concise language suitable for business proposals\n✓ Match the style and format of professional SEO/development proposals\n✓ Use proper formatting that renders correctly in Google Docs\n\nCRITICAL FORMATTING RULES:\n\n1. **Executive Summary** (2-3 paragraphs, 150-250 words):\n - Write flowing paragraphs separated by blank lines\n - No bullets or numbers\n - Professional, engaging introduction\n\n2. **Scope of Work** (4-6 main sections):\n - Format EXACTLY like this:\n \n 1. Section Title\n ● First deliverable point\n ● Second deliverable point\n ● Third deliverable point\n \n 2. Next Section Title\n ● First deliverable point\n ● Second deliverable point\n \n - Use actual bullet character: ●\n - Add blank line between sections\n - Each bullet should be a complete, clear deliverable\n - 3-6 bullets per section\n\n3. **Costing** - Generate as separate fields:\n - month1_focus: Brief description (e.g., \"Technical SEO + Setup\")\n - month1_cost: Amount with ₹ symbol (e.g., \"₹1,50,000\")\n - Repeat for months 2, 3, 4\n - total_cost: Total amount\n\n4. **Timeline** (2-3 sentences, 100-150 words):\n - Describe the 4-month execution plan\n - Professional paragraph format\n - Mention structured delivery and communication\n\n5. **Conclusion** (60-100 words):\n - Professional closing paragraph\n - Express eagerness to collaborate\n - Include contact: [YOUR_EMAIL], [YOUR_PHONE]\n - Mention proposal validity: 30 days\n\nOUTPUT FORMAT:\nReturn ONLY valid JSON with these exact fields:\n{\n \"executive_summary\": \"Paragraph 1 text here.\\n\\nParagraph 2 text here.\\n\\nParagraph 3 text here.\",\n \"scope_of_work\": \"1. Section Title\\n● Deliverable one\\n● Deliverable two\\n● Deliverable three\\n\\n2. Next Section\\n● Deliverable one\\n● Deliverable two\",\n \"month1_focus\": \"Focus area description\",\n \"month1_cost\": \"₹X,XX,XXX\",\n \"month2_focus\": \"Focus area description\",\n \"month2_cost\": \"₹X,XX,XXX\",\n \"month3_focus\": \"Focus area description\",\n \"month3_cost\": \"₹X,XX,XXX\",\n \"month4_focus\": \"Focus area description\",\n \"month4_cost\": \"₹X,XX,XXX\",\n \"total_cost\": \"₹X,XX,XXX\",\n \"timeline\": \"Timeline description paragraph.\",\n \"conclusion\": \"Closing paragraph with contact details.\"\n}\n\nIMPORTANT:\n- Use \\n for single line break\n- Use \\n\\n for paragraph break\n- Use actual ● character for bullets (not asterisk or dash)\n- Never use markdown formatting\n- Ensure costs are realistic for 4-month engagements (₹1,20,000 - ₹7,00,000 range)\n- Match the professional tone of the reference SEO proposal"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "fe0185ea-bd06-4a26-9299-5e0a107721ee",
"name": "触发器:新表格行",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-864,
32
],
"parameters": {
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEET_ID",
"cachedResultName": "Proposal Input Sheet"
}
},
"typeVersion": 1
},
{
"id": "f7977e27-0016-4c9b-b4b4-da5bc31a5e5f",
"name": "模型:GPT-4o",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-416,
256
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "gpt-4o"
},
"options": {
"temperature": 0.7
}
},
"typeVersion": 1.2
},
{
"id": "c70c2f9e-e563-475d-91f4-c40fc2170681",
"name": "解析器:JSON输出",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-160,
256
],
"parameters": {
"jsonSchemaExample": "{\n \"executive_summary\": \"Professional summary paragraph\",\n \"scope_of_work\": \"1. Section\\\\n● Item\\\\n● Item\\\\n\\\\n2. Section\\\\n● Item\",\n \"month1_focus\": \"Discovery & Planning\",\n \"month1_cost\": \"₹1,50,000\",\n \"month2_focus\": \"Development\",\n \"month2_cost\": \"₹2,00,000\",\n \"month3_focus\": \"Integration\",\n \"month3_cost\": \"₹1,80,000\",\n \"month4_focus\": \"Deployment\",\n \"month4_cost\": \"₹1,70,000\",\n \"total_cost\": \"₹7,00,000\",\n \"timeline\": \"Timeline description\",\n \"conclusion\": \"Closing with contact info\"\n }"
},
"typeVersion": 1.3
},
{
"id": "fc54a244-22a4-4149-b63b-022dc7b8471a",
"name": "填充:模板文档",
"type": "n8n-nodes-base.googleDocs",
"position": [
64,
32
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "{{executive_summary}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.executive_summary }}"
},
{
"text": "{{scope_of_work}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.scope_of_work }}"
},
{
"text": "{{timeline}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.timeline }}"
},
{
"text": "{{conclusion}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.conclusion }}"
},
{
"text": "{{month1_focus}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month1_focus }}"
},
{
"text": "{{month1_cost}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month1_cost }}"
},
{
"text": "{{month2_focus}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month2_focus }}"
},
{
"text": "{{month2_cost}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month2_cost }}"
},
{
"text": "{{month3_focus}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month3_focus }}"
},
{
"text": "{{month3_cost}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month3_cost }}"
},
{
"text": "{{month4_focus}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month4_focus }}"
},
{
"text": "{{month4_cost}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.month4_cost }}"
},
{
"text": "{{total_cost}}",
"action": "replaceAll",
"replaceText": "={{ $json.output.total_cost }}"
}
]
},
"operation": "update",
"documentURL": "YOUR_TEMPLATE_DOCUMENT_ID"
},
"typeVersion": 2
},
{
"id": "686245ec-056d-47de-a147-ce81478c9db7",
"name": "下载:完成的提案",
"type": "n8n-nodes-base.googleDrive",
"position": [
288,
32
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.documentId }}"
},
"options": {},
"operation": "download"
},
"typeVersion": 3
},
{
"id": "91212aab-6097-471b-83fb-beeec786381a",
"name": "归档:保存到Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
512,
32
],
"parameters": {
"name": "={{ $('Trigger: New Sheet Row').item.json.clientName + '_Proposal_' + $now.format('yyyy-MM-dd') }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "YOUR_OUTPUT_FOLDER_ID",
"cachedResultUrl": "https://drive.google.com/drive/folders/",
"cachedResultName": "Proposals Output"
}
},
"typeVersion": 3
},
{
"id": "aecc7cee-e436-4813-ac5c-c8cd86bf7d12",
"name": "重置:模板占位符",
"type": "n8n-nodes-base.googleDocs",
"position": [
736,
32
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.executive_summary }}",
"action": "replaceAll",
"replaceText": "{{executive_summary}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.scope_of_work }}",
"action": "replaceAll",
"replaceText": "{{scope_of_work}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.timeline }}",
"action": "replaceAll",
"replaceText": "{{timeline}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.conclusion }}",
"action": "replaceAll",
"replaceText": "{{conclusion}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month1_focus }}",
"action": "replaceAll",
"replaceText": "{{month1_focus}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month1_cost }}",
"action": "replaceAll",
"replaceText": "{{month1_cost}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month2_focus }}",
"action": "replaceAll",
"replaceText": "{{month2_focus}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month2_cost }}",
"action": "replaceAll",
"replaceText": "{{month2_cost}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month3_focus }}",
"action": "replaceAll",
"replaceText": "{{month3_focus}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month3_cost }}",
"action": "replaceAll",
"replaceText": "{{month3_cost}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month4_focus }}",
"action": "replaceAll",
"replaceText": "{{month4_focus}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.month4_cost }}",
"action": "replaceAll",
"replaceText": "{{month4_cost}}"
},
{
"text": "={{ $('AI Agent: Generate Proposal').item.json.output.total_cost }}",
"action": "replaceAll",
"replaceText": "{{total_cost}}"
}
]
},
"operation": "update",
"documentURL": "YOUR_TEMPLATE_DOCUMENT_ID"
},
"typeVersion": 2
},
{
"id": "aff26737-275a-4c7f-9c59-8df2d196d1b4",
"name": "过滤:仅最新行",
"type": "n8n-nodes-base.code",
"position": [
-640,
32
],
"parameters": {
"jsCode": "// Filter to process only the last appended row\nconst items = $input.all();\n\nif (!items || items.length === 0) {\n return [];\n}\n\n// Get the most recent entry\nconst lastItem = items[items.length - 1];\n\n// Return as single-item array\nreturn [{ json: lastItem.json }];"
},
"typeVersion": 2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "2140343a-e97e-4439-befe-225b63a8595d",
"connections": {
"Model: GPT-4o": {
"ai_languageModel": [
[
{
"node": "AI Agent: Generate Proposal",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Parser: JSON Output": {
"ai_outputParser": [
[
{
"node": "AI Agent: Generate Proposal",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Archive: Save to Drive": {
"main": [
[
{
"node": "Reset: Template Placeholders",
"type": "main",
"index": 0
}
]
]
},
"Memory: Client Context": {
"ai_memory": [
[
{
"node": "AI Agent: Generate Proposal",
"type": "ai_memory",
"index": 0
}
]
]
},
"Trigger: New Sheet Row": {
"main": [
[
{
"node": "Filter: Latest Row Only",
"type": "main",
"index": 0
}
]
]
},
"Filter: Latest Row Only": {
"main": [
[
{
"node": "AI Agent: Generate Proposal",
"type": "main",
"index": 0
}
]
]
},
"AI Agent: Generate Proposal": {
"main": [
[
{
"node": "Populate: Template Document",
"type": "main",
"index": 0
}
]
]
},
"Populate: Template Document": {
"main": [
[
{
"node": "Download: Completed Proposal",
"type": "main",
"index": 0
}
]
]
},
"Download: Completed Proposal": {
"main": [
[
{
"node": "Archive: Save to Drive",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 文档提取, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
从Google Drive生成n8n模板描述
使用Azure GPT-4从Google Drive生成模板描述
Code
Gmail
Google Drive
+9
27 节点Rahul Joshi
内容创作
1. 播放列表详情设置机器人副本
使用 Suno、GPT-4、Runway 和 Creatomate 创建 AI 生成的 YouTube 音乐播放列表
If
Set
Code
+22
203 节点Joseph
内容创作
使用 Azure OpenAI 和 Google Workspace 自动化 DEI 资格筛选
使用Azure GPT-4o、Google云端硬盘和表格自动进行DEI资格筛选
If
Code
Gmail
+9
19 节点Rahul Joshi
内容创作
客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
If
Code
Gmail
+10
28 节点Rahul Joshi
内容创作
人员流失风险预警工作流(Azure OpenAI + n8n)
员工流失风险检测与HR提醒,使用Azure OpenAI GPT-4o-mini和Gmail
If
Code
Gmail
+7
16 节点Rahul Joshi
内容创作
将服装图片上传到Cloudinary并使用Azure OpenAI (GPT-4o) 记录到工作表
使用GPT-4o、Cloudinary和Google Sheets处理和编目服装图片
Set
Code
Merge
+9
26 节点Rahul Joshi
内容创作
工作流信息
难度等级
高级
节点数量16
分类2
节点类型9
作者
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
外部链接
在 n8n.io 查看 →
分享此工作流