Guide

How to Post to Social Media from Google Sheets

Google Sheets is already where most teams plan their content. Why not turn it into a publishing engine? This guide shows you how to set up a spreadsheet that automatically posts your content to TikTok, Instagram, YouTube and more, without leaving your browser.

How this works

The setup has three parts:

  1. Google Sheets as your content calendar (titles, captions, video links, target platforms, publish dates)
  2. An automation tool (n8n, Make.com, or Airtable) that reads new rows from the sheet
  3. The Upload-Post API that takes the content and publishes it to your social accounts

When you add a new row to the spreadsheet with status "ready", the automation picks it up, sends the video and caption to the API, publishes to all selected platforms, and updates the row with "published" and the post URLs. The whole thing runs in the background.

Step 1: Set up your spreadsheet

Create a Google Sheet with these columns:

A: Title B: Caption C: Video URL D: Platforms E: Publish Date F: Status G: Post URLs
Summer sale promo 50% off everything this week! https://drive.google.com/... tiktok, instagram, youtube 2025-09-22 10:00 ready
Behind the scenes How we make our products https://drive.google.com/... tiktok, instagram, linkedin 2025-09-23 12:00 pending

The "Video URL" column should contain either a public Google Drive link, a Dropbox link, or any publicly accessible URL to the video file. The automation tool will download it and pass it to the API.

The "Status" column is what triggers the automation. Set it to "ready" when a piece of content is approved and should be published. The workflow will change it to "published" after a successful upload.

Step 2: Choose your automation tool

There are three good options, each with its own strengths:

Option A: n8n (recommended for full control)

n8n is an open source automation tool that gives you the most flexibility. We have a ready made template that does exactly what we've described:

Import either template into your n8n instance with one click, plug in your API key, and it works out of the box. The workflow:

  1. Triggers on a schedule (e.g. every hour) or manually
  2. Reads rows from Google Sheets where Status = "ready"
  3. Downloads the video from the URL in each row
  4. Sends it to the Upload-Post API with the title, caption and platforms from the sheet
  5. Updates the row status to "published" with post URLs

For more n8n automation ideas, browse the full n8n template library.

Option B: Make.com (good for teams already on Make)

Make.com connects Google Sheets to the Upload-Post API using its HTTP module. The flow is the same:

  1. Google Sheets module watches for rows where Status = "ready"
  2. HTTP module downloads the video file
  3. HTTP module posts to https://api.upload-post.com/api/upload with multipart form data
  4. Google Sheets module updates the row with results

The HTTP module needs these settings: Method = POST, Body Type = Multipart/form-data, and a custom header with your API key. Check our Make.com templates for prebuilt scenarios.

Option C: Airtable (for teams who prefer Airtable over Sheets)

If you're already using Airtable, you can skip Google Sheets entirely. Airtable has built in automation scripts that trigger when a record is created or updated. Our Airtable integration guide walks through setting up an automation that:

  1. Triggers when a record's status changes to "ready"
  2. Runs a script that sends the content to the Upload-Post API
  3. Updates the record with the result

Step 3: Configure the Upload-Post API call

Regardless of which tool you use, the API call is the same. Here's what each spreadsheet column maps to:

Spreadsheet column API parameter Notes
TitletitleMain post caption for all platforms
CaptiondescriptionExtended text (YouTube, LinkedIn, Facebook)
Video URLvideoCan be a URL or file binary
Platformsplatform[]Split comma-separated string into array
Publish Datescheduled_dateISO-8601 format; leave empty for immediate

Sample cURL for reference

curl -X POST https://api.upload-post.com/api/upload \
  -H "Authorization: Apikey your-api-key-here" \
  -F "video=https://drive.google.com/uc?id=FILE_ID" \
  -F "user=mybrand" \
  -F "title=Summer sale promo" \
  -F "description=50% off everything this week!" \
  -F "platform[]=tiktok" \
  -F "platform[]=instagram" \
  -F "platform[]=youtube" \
  -F "scheduled_date=2025-09-22T10:00:00Z" \
  -F "timezone=America/New_York"

Notice how you can pass the video as a URL instead of a file upload. This works with any publicly accessible video link, including Google Drive shared links.

Advanced: AI generated captions from your spreadsheet

You can take this further by adding an AI step between reading the sheet and posting. Instead of writing captions manually, include just a topic or brief note in your spreadsheet and let an LLM generate platform optimized captions.

Our n8n template for Google Drive to social media with AI descriptions does exactly this. It uses Gemini to generate tailored captions for each platform based on a short description you provide.

There's also a template that lets you generate and schedule posts with GPT-4 and get Telegram approval before they go live. Perfect for teams that want AI assistance but still need a human in the loop.

Adding platform specific captions

If you want different captions per platform, add extra columns to your sheet like "TikTok Caption", "Instagram Caption", etc. Then map them to the API's platform specific parameters:

  • tiktok_title for TikTok specific captions with hashtags
  • instagram_title for Instagram with call to actions
  • youtube_title and youtube_description for YouTube with SEO keywords
  • linkedin_title for LinkedIn with a professional tone

Use our character counter to make sure your captions fit within each platform's limits before adding them to the sheet.

Handling photos and carousels from the spreadsheet

The same approach works for images. Instead of a single video URL column, use multiple image columns or a comma-separated list of image URLs. Then use the /api/upload_photos endpoint instead:

curl -X POST https://api.upload-post.com/api/upload_photos \
  -H "Authorization: Apikey your-api-key-here" \
  -F "photos[][email protected]" \
  -F "photos[][email protected]" \
  -F "photos[][email protected]" \
  -F "user=mybrand" \
  -F "title=Our new collection" \
  -F "platform[]=instagram" \
  -F "platform[]=tiktok"

Tracking results back in the spreadsheet

After the API returns a response, your automation tool should update the spreadsheet row with:

  • Status changed from "ready" to "published" (or "failed" if something went wrong)
  • Post URLs for each platform, so you can click through and verify
  • Timestamp of when the post went live

This gives you a complete audit trail of every piece of content published, all in one place. No need to check each platform's dashboard individually.

Frequently asked questions

Can I use this with Google Drive videos directly?

Yes. The Upload-Post API accepts video URLs, so you can link directly to files in Google Drive (make sure the sharing is set to "Anyone with the link"). The n8n templates handle Google Drive authentication automatically.

What if a post fails for one platform but succeeds on others?

The API response includes individual results per platform. Your automation can update the spreadsheet with partial results, showing which platforms succeeded and which failed (with the error message).

Can multiple team members use the same spreadsheet?

Absolutely. That's one of the biggest benefits of this approach. Your content team fills in the rows, a manager changes the status to "ready" when approved, and the automation handles publishing. Everyone sees the status in real time.

How often does the automation check for new rows?

You configure this in n8n or Make.com. Common settings are every 15 minutes, every hour, or on a fixed daily schedule. In n8n, you can also trigger manually or use a webhook for instant processing.

Turn your spreadsheet into a publishing engine

Plan in Google Sheets. Publish everywhere. Create a free Upload-Post account and connect it to your content calendar in minutes.

No credit card required. 10 free uploads included.