AutomationFlowsMarketing & Ads › Edit and Upload Images to Google Drive

Edit and Upload Images to Google Drive

Original n8n title: Edit Image

Edit Image. Uses executeWorkflowTrigger, httpRequest, convertToFile, googleSheets. Event-driven trigger; 12 nodes.

Event trigger★★★★☆ complexity12 nodesExecute Workflow TriggerHTTP RequestGoogle SheetsGoogle DriveTelegram
Marketing & Ads Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:

This workflow follows the Execute Workflow Trigger → Google Drive recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Edit Image",
  "nodes": [
    {
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "image"
            },
            {
              "name": "request"
            },
            {
              "name": "chatID"
            },
            {
              "name": "pictureID"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        -460,
        -60
      ],
      "id": "36d1e3ee-578f-49b2-9412-2efdb2a8679b",
      "name": "When Executed by Another Workflow"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.openai.com/v1/images/edits",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "parameterType": "formBinaryData",
              "name": "image",
              "inputDataFieldName": "data"
            },
            {
              "name": "prompt",
              "value": "={{ $('When Executed by Another Workflow').item.json.request.replace(/\"/g, '') }}"
            },
            {
              "name": "model",
              "value": "gpt-image-1"
            },
            {
              "name": "size",
              "value": "1024x1024"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        60,
        -60
      ],
      "id": "24f80819-532a-48de-880e-04c7542acfdb",
      "name": "Edit Image",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "toBinary",
        "sourceProperty": "data[0].b64_json",
        "options": {}
      },
      "type": "n8n-nodes-base.convertToFile",
      "typeVersion": 1.1,
      "position": [
        280,
        -60
      ],
      "id": "50f5c317-bf8e-4532-b350-4789f2ba5015",
      "name": "Convert to File"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1JqOTd49heNBdmrf5hSwxI66X724tspAmSjzWoA6-EU0",
          "mode": "list",
          "cachedResultName": "Marketing Team Log",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JqOTd49heNBdmrf5hSwxI66X724tspAmSjzWoA6-EU0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JqOTd49heNBdmrf5hSwxI66X724tspAmSjzWoA6-EU0/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Request": "={{ $('When Executed by Another Workflow').item.json.request }}",
            "ID": "={{ $json.id }}",
            "Link": "={{ $json.webViewLink }}",
            "Title": "={{ $('When Executed by Another Workflow').item.json.image }}",
            "Type": "Edit"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Type",
              "displayName": "Type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Request",
              "displayName": "Request",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "ID",
              "displayName": "ID",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Link",
              "displayName": "Link",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Post",
              "displayName": "Post",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        820,
        80
      ],
      "id": "ec2809d7-1694-44e0-a71a-1211e4bd035d",
      "name": "Image Log",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "name": "={{ $('When Executed by Another Workflow').item.json.image }} (Edited).png",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "value": "1TgQu-5hlOzO1X28TMMzLxfhunhPSUIqy",
          "mode": "list",
          "cachedResultName": "AI Image Generation",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1TgQu-5hlOzO1X28TMMzLxfhunhPSUIqy"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        580,
        80
      ],
      "id": "4a115e36-6499-4f9a-b67d-9f0822aa5828",
      "name": "Upload Image",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "# Edit Image\n",
        "height": 260,
        "width": 460,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -20,
        -140
      ],
      "id": "5d2f7558-d92f-4210-afad-3e8663ce1c02",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "# Send Content",
        "height": 240,
        "width": 300,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        480,
        -260
      ],
      "id": "516cd165-3950-4918-9cbc-1e0270158950",
      "name": "Sticky Note7"
    },
    {
      "parameters": {
        "content": "# Write to Drive & Sheets",
        "height": 240,
        "width": 540,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        480,
        0
      ],
      "id": "b26da69c-aa27-423d-9300-a91fc06841dd",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "content": "# Trigger\n",
        "height": 260,
        "width": 260,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -540,
        -140
      ],
      "id": "b41c6e09-ff88-4a00-9bed-99d897a21e86",
      "name": "Sticky Note5",
      "disabled": true
    },
    {
      "parameters": {
        "content": "# Download\n",
        "height": 260,
        "width": 220,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -260,
        -140
      ],
      "id": "d2ed85a5-a54d-41ec-8ba8-bd81ad3757e8",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "operation": "sendPhoto",
        "chatId": "={{ $('When Executed by Another Workflow').item.json.chatID }}",
        "binaryData": true,
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        580,
        -180
      ],
      "id": "34514a64-8924-41ba-9056-842ed5e53041",
      "name": "Send Photo",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json.pictureID }}",
          "mode": "id"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        -200,
        -60
      ],
      "id": "f8f7c05b-2b9b-43da-9f77-ec1747ce7fdf",
      "name": "Download",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Download",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Image": {
      "main": [
        [
          {
            "node": "Convert to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to File": {
      "main": [
        [
          {
            "node": "Send Photo",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Image": {
      "main": [
        [
          {
            "node": "Image Log",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download": {
      "main": [
        [
          {
            "node": "Edit Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "4779739c-f8eb-4121-bd50-1a6b4e7de753",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "nMBpMe21l4gDEjOI",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow streamlines image editing by automatically processing files through an external API, converting the results into a usable format, logging details in Google Sheets for easy tracking, and uploading the final version to Google Drive. It's ideal for content creators, marketers, or teams handling visual assets who need quick, consistent edits without manual intervention, saving hours on repetitive tasks. The key step involves the HTTP request to the editing service, which handles the core transformation before seamless integration with your storage and records.

Use this workflow when you receive image edit requests via events from another automation or Telegram bot, ensuring outputs are organised in Google Drive and Sheets for collaboration. Avoid it for complex edits requiring custom AI, as it relies on predefined API calls; opt for manual tools instead. Common variations include adding Telegram notifications for completion alerts or swapping Google Drive for Dropbox to match your storage setup.

About this workflow

Edit Image. Uses executeWorkflowTrigger, httpRequest, convertToFile, googleSheets. Event-driven trigger; 12 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Marketing & Ads workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Marketing & Ads

The Recap AI - Insurance Lawyer Lead Gen. Uses executeWorkflowTrigger, formTrigger, @mendable/n8n-nodes-firecrawl, googleSheets. Event-driven trigger; 33 nodes.

Execute Workflow Trigger, Form Trigger, @Mendable/N8N Nodes Firecrawl +4
Marketing & Ads

This workflow is designed to take user inputs in order to generate an image using the Riverflow 2.0 model through the Replicate API. It can handle both image generation as well as image editing. Addit

Form Trigger, Data Table, HTTP Request +1
Marketing & Ads

This workflow allows you to send multi-step email campaigns using n8n, Gmail and Google Sheets.

Google Sheets, Gmail, Execute Workflow Trigger
Marketing & Ads

Enrich And Veryify Leads. Uses httpRequest, googleSheets, googleSheetsTrigger. Event-driven trigger; 32 nodes.

HTTP Request, Google Sheets, Google Sheets Trigger
Marketing & Ads

This workflow is a comprehensive solution for digital marketers, performance agencies, and e-commerce brands looking to scale their creative testing process on Meta Ads efficiently. It eliminates the

Google Drive, HTTP Request, Google Sheets