Gmail Workflows

作者 claude-office-skills9c4c7d5cd281MIT499 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫8 個月前更新

Automate Gmail with intelligent workflows - attachment management, email organization, auto-archiving, and Google Drive integration

AI 產生的概覽

設計 Gmail 自動化工作流程,用於附件管理、標籤、封存和 Google Drive 同步。

功能
此技能提供建立 Gmail 自動化工作流程的範本和設定模式,包括附件擷取、郵件篩選與標籤、自動封存,以及上傳至 Google Drive。它也涵蓋發票收集、客戶郵件整理和郵件指標報告。它產出工作流程設計、YAML 設定和範例指令碼,本身並不執行這些指令碼。
適用情境
適用於規劃或記錄 Gmail 自動化,例如將附件路由到 Drive、整理客戶或專案郵件,或追蹤郵件指標。適合想要取得可用於 n8n、Google Apps Script 或 Google Workspace MCP 工具的可重複使用工作流程模式的使用者。
執行需求
需要具備 Gmail 和 Drive 工具的 Google Workspace MCP 伺服器,或使用 n8n 或 Google Apps Script 來實作。需要 Gmail 和 Google Drive 的 OAuth 認證資訊。此技能不附帶指令碼,僅包含說明和設定範例。

Gmail Workflows

Automate Gmail with intelligent workflows for attachment management, email organization, and Google Drive integration. Based on n8n's 7,800+ workflow templates.

Overview

This skill helps you design and implement Gmail automation workflows that:

  • Automatically save attachments to Google Drive
  • Organize emails with smart labeling
  • Archive processed emails
  • Send notifications via Slack/Email
  • Track email metrics

Core Workflow Templates

1. Gmail Attachment Manager

Purpose: Automatically extract attachments from emails and save to Google Drive

Workflow Steps:

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐│ Gmail       │───▶│ Filter by   │───▶│ Extract     │───▶│ Upload to   ││ Trigger     │    │ Criteria    │    │ Attachments │    │ Google Drive│└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘                                                                │                         ┌─────────────┐    ┌─────────────┐    │                         │ Send        │◀───│ Apply Label │◀───┘                         │ Notification│    │ & Archive   │                         └─────────────┘    └─────────────┘

Configuration:

yaml
trigger:  type: gmail_new_email  filters:    has_attachment: true    from: ["*@company.com", "*@vendor.com"]    subject_contains: ["invoice", "report", "contract"]
actions:  - extract_attachments:      file_types: [pdf, xlsx, docx, csv]      max_size_mb: 25    - upload_to_drive:      folder_path: "/Attachments/{year}/{month}"      naming_pattern: "{filename}_{sender}_{date}"      create_folder_if_missing: true    - organize_email:      apply_label: "Processed/Attachments"      mark_as_read: true      archive: true    - notify:      channel: slack      message: "New attachment saved: {filename} from {sender}"

Best Practices:

  • Use specific sender filters to avoid processing spam
  • Set file size limits to prevent storage issues
  • Use date-based folder structure for easy retrieval
  • Enable duplicate detection to avoid redundant uploads

2. Invoice Auto-Archiver

Purpose: Automatically collect and organize invoices from email

Workflow Steps:

Gmail Trigger → Detect Invoice → Extract PDF → OCR/Parse → Save to Drive → Update Spreadsheet → Archive Email

Configuration:

yaml
trigger:  subject_patterns:    - "invoice"    - "bill"    - "statement"    - "付款"    - "发票"
processing:  - detect_invoice:      methods: [subject_keywords, attachment_name, sender_domain]    - extract_data:      fields: [invoice_number, amount, date, vendor, due_date]      use_ocr: true    - save_to_drive:      folder: "/Finance/Invoices/{year}/{vendor}"      naming: "{date}_{vendor}_{amount}"    - update_tracker:      spreadsheet: "Invoice Tracker"      columns: [Date, Vendor, Amount, Invoice#, Status, File_Link]    - archive:      label: "Finance/Invoices"      star: true

3. Client Communication Organizer

Purpose: Automatically organize client emails by project/client

Configuration:

yaml
rules:  - name: "Client A Emails"    condition:      from_domain: "clienta.com"    actions:      - apply_label: "Clients/Client A"      - forward_to: "[email protected]"      - save_attachments: "/Clients/Client A/{subject}"
  - name: "Project X Updates"    condition:      subject_contains: ["Project X", "PX-"]    actions:      - apply_label: "Projects/Project X"      - add_to_task: "Project X Board"      - notify_slack: "#project-x"
  - name: "Urgent Requests"    condition:      subject_contains: ["URGENT", "ASAP", "紧急"]      is_unread: true    actions:      - apply_label: "Priority/Urgent"      - send_sms: "+1234567890"      - move_to_inbox: true

4. Email Analytics Dashboard

Purpose: Track email metrics and generate reports

Metrics to Track:

yaml
daily_metrics:  - emails_received: count(inbox)  - emails_sent: count(sent)  - response_time_avg: avg(reply_time)  - unread_count: count(unread)  - attachment_count: count(has_attachment)
weekly_report:  - top_senders: group_by(from, count)  - busiest_hours: group_by(hour, count)  - label_distribution: group_by(label, count)  - response_rate: sent / received
automation:  - schedule: "every Monday 9am"  - output: Google Sheets  - notify: Slack #email-metrics

Implementation Guide

Using n8n

javascript
// n8n Workflow: Gmail to Google Drive{  "nodes": [    {      "name": "Gmail Trigger",      "type": "n8n-nodes-base.gmailTrigger",      "parameters": {        "pollTimes": { "item": [{ "mode": "everyMinute" }] },        "filters": { "labelIds": ["INBOX"] }      }    },    {      "name": "Filter Attachments",      "type": "n8n-nodes-base.if",      "parameters": {        "conditions": {          "boolean": [{            "value1": "={{ $json.hasAttachment }}",            "value2": true          }]        }      }    },    {      "name": "Get Attachments",      "type": "n8n-nodes-base.gmail",      "parameters": {        "operation": "getAttachments",        "messageId": "={{ $json.id }}"      }    },    {      "name": "Upload to Drive",      "type": "n8n-nodes-base.googleDrive",      "parameters": {        "operation": "upload",        "folderId": "your-folder-id",        "name": "={{ $json.filename }}"      }    }  ]}

Using Google Apps Script

javascript
// Gmail to Drive Automationfunction processNewEmails() {  const threads = GmailApp.search('has:attachment is:unread');  const targetFolder = DriveApp.getFolderById('FOLDER_ID');    threads.forEach(thread => {    const messages = thread.getMessages();    messages.forEach(message => {      const attachments = message.getAttachments();      attachments.forEach(attachment => {        // Save to Drive        const file = targetFolder.createFile(attachment);                // Rename with date and sender        const newName = `${Utilities.formatDate(message.getDate(), 'GMT', 'yyyy-MM-dd')}_${message.getFrom()}_${attachment.getName()}`;        file.setName(newName);      });            // Mark as processed      message.markRead();      thread.addLabel(GmailApp.getUserLabelByName('Processed'));    });  });}
// Set up triggerfunction setupTrigger() {  ScriptApp.newTrigger('processNewEmails')    .timeBased()    .everyMinutes(5)    .create();}

Common Workflow Patterns

Pattern 1: Filter → Process → Organize → Notify

Email arrives    │    ▼┌─────────────────┐│ Apply Filters   │ → Skip if doesn't match│ (sender, subject││  attachment)    │└────────┬────────┘         │         ▼┌─────────────────┐│ Process Content │ → Extract data, attachments│                 │└────────┬────────┘         │         ▼┌─────────────────┐│ Organize        │ → Save files, apply labels│                 │└────────┬────────┘         │         ▼┌─────────────────┐│ Notify          │ → Slack, email, SMS│                 │└─────────────────┘

Pattern 2: Batch Processing

yaml
schedule: "daily at 6am"steps:  1. Collect all unprocessed emails from last 24h  2. Group by category (invoices, reports, misc)  3. Batch upload to respective Drive folders  4. Generate summary report  5. Send daily digest to stakeholders

Pattern 3: Conditional Routing

yaml
conditions:  - if: attachment_type == "pdf" AND subject contains "invoice"    then: route_to_finance_folder    - if: from_domain in ["important-client.com"]    then: priority_handling + immediate_notification    - if: attachment_size > 10MB    then: save_to_large_files_folder + skip_backup    - default:    then: standard_processing

Troubleshooting

Common Issues

IssueSolution
Attachments not detectedCheck MIME type filters, increase trigger frequency
Duplicate filesEnable deduplication by hash or filename
Rate limitsReduce trigger frequency, use batch processing
Permission errorsRe-authorize OAuth credentials
Large files failingSet size limits, use chunked upload

Security Considerations

  1. OAuth Scopes: Request minimal permissions

    • gmail.readonly for reading
    • gmail.modify for labels/archive
    • drive.file for Drive access
  2. Data Privacy:

    • Don't log email content
    • Use secure storage for credentials
    • Implement retention policies
  3. Access Control:

    • Limit who can modify workflows
    • Audit automation activities
    • Use separate service accounts

Output Example

Daily Email Report:

markdown
# Email Activity Report - 2026-01-30
## Summary- Emails Received: 47- Emails Sent: 23- Attachments Processed: 12- Average Response Time: 2.3 hours
## Attachment Processing| File | Sender | Saved To | Time ||------|--------|----------|------|| Invoice_Jan.pdf | [email protected] | /Finance/Invoices | 09:15 || Report_Q4.xlsx | [email protected] | /Reports/Q4 | 10:30 || Contract_v2.docx | [email protected] | /Contracts | 14:22 |
## Labels Applied- Finance/Invoices: 5 emails- Projects/Active: 12 emails- Clients/Priority: 8 emails
## Pending Actions- 3 emails require manual review- 2 large attachments need approval

Gmail Workflows Skill - Part of Claude Office Skills

來源與署名

來源:claude-office-skills/skills位於gmail-workflows提交9c4c7d5

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架