đŸ“± Schedule approved LinkedIn page posts from Google Sheets with precise timing

⚡ 62 views · đŸ“± Social Media & Email Marketing

💡 Pro Tip — If you’re pulling LinkedIn data through HTTP requests or dealing with API restrictions, there’s a community node called ScraperNode that handles this natively. It has dedicated scrapers for profiles, companies, jobs, and people search — you just pass a URL and get structured data back.

View All Scrapers

Description

Description

Automate LinkedIn organization page posting with precise time scheduling and Google Drive media management. Runs hourly during business hours, processes approved posts scheduled for today, waits until exact time, publishes to LinkedIn, and updates tracking sheet—perfect for maintaining consistent LinkedIn presence.


What this workflow does

This workflow automates LinkedIn organization page posting with precise timing control and a centralized Google Sheets content calendar. It runs four times daily (9:45 AM, 10:45 AM, 11:45 AM, 12:45 PM) and reads your Google Sheet to find posts marked with Approval Status = “Good” and Platform = “LinkedIn” that are scheduled for today. Unlike batch processing workflows, this processes ONE post per run to prevent duplicate scheduling. Once it finds a post, it marks it as “Scheduled” in your sheet, then uses a Wait node to pause the workflow execution until the exact scheduled time (with automatic timezone conversion from Eastern to India time). At the scheduled moment, it either downloads an image from Google Drive and publishes a Creative Post, or publishes an Article link—depending on the Post Type. After successfully publishing to your LinkedIn organization page, it updates your Google Sheet with the live post URL and changes the Approval Status to “Published”, creating a complete audit trail with precise timing control.

Perfect for social media managers maintaining consistent LinkedIn presence, marketing agencies scheduling client LinkedIn content with approval checkpoints, content creators batch-planning professional posts, and teams needing collaborative LinkedIn calendars with exact time control.


Key features

Precise time scheduling with Wait node: Unlike immediate publishing, this workflow uses n8n’s Wait node to pause execution until the exact scheduled time—ensuring posts publish at 10:00 AM sharp, not 9:45 AM when the workflow runs.

Timezone conversion included: Automatically converts “Scheduled On” times from Eastern Time (content creator’s timezone) to India Time (server timezone) using DateTime.fromFormat—no manual calculation needed.

One post per run: Processes only the first pending post each time the workflow runs, preventing duplicate scheduling if multiple posts share the same time slot—ensures clean execution and tracking.

Dual post type support: Handles both Creative Posts (image posts downloaded from Google Drive) and Articles (link posts with article URL)—automatically routes based on Post Type column.

LinkedIn organization posting: Posts directly to your LinkedIn organization/company page (not personal profile) using LinkedIn Community Management API with proper OAuth authentication.

Status progression tracking: Three-stage workflow: Good (approved) → Scheduled (waiting for time) → Published (live on LinkedIn)—always know what’s queued vs. what’s live.

Google Sheets content calendar: Manage LinkedIn posts in a familiar spreadsheet with columns for Scheduled On, Platform, Post Type, Caption, Media URL, and Approval Status—no complex tools needed.

Google Drive media integration: Stores images in Google Drive (centralized storage), then automatically downloads them when publishing Creative Posts—supports shared drives and private files.

Post URL tracking: After publishing, updates Google Sheet with the live LinkedIn post URL (https://www.linkedin.com/feed/update/{urn})—enables easy performance tracking and reporting.

Runs during business hours only: Schedule trigger fires at :45 minutes (9-12 AM) to catch morning posts—won’t run at night or on weekends unless you modify the cron.


How it works

1. Hourly trigger during business hours

A cron trigger runs at 9:45 AM, 10:45 AM, 11:45 AM, and 12:45 PM every day. The :45 timing gives a 15-minute buffer before the hour to schedule posts for :00, :15, :30, or :45 times.

2. Load LinkedIn credentials

The workflow reads a separate “.env” sheet in your Google Sheets document containing:

This centralizes credentials so multiple workflows can share the same settings.

3. Fetch approved LinkedIn posts

The workflow reads your main “Post URL” sheet and applies two filters:

This returns all approved LinkedIn posts regardless of date.

4. Filter posts scheduled for today

A Code node compares the “Scheduled On” column value against today’s date (ignores time, just checks the date part). Only posts scheduled for today pass through.

Supported date format:

5. Process first post only

Critical difference from Facebook workflow: A Code node extracts only the FIRST item from the filtered posts.

Why only one post?

6. Route by post type

A Switch node checks the Post Type column:


Branch A: Creative Post with Image

7a. Mark as scheduled in sheet

Before waiting, the workflow updates the Google Sheet:

This prevents the same post from being picked up again in the next hourly run.

8a. Wait until scheduled time

Most critical node: The Wait node pauses workflow execution until the exact scheduled time.

Timezone conversion logic:

DateTime.fromFormat(
  $('Route by Post Type').item.json['Scheduled On'],
  'yyyy-MM-dd HH-mm',
  { zone: 'America/New_York' }  // Input timezone (Eastern)
)
.setZone('Asia/Kolkata')        // Server timezone (India)
.toFormat("yyyy-MM-dd'T'HH:mm:ss")

Example:

9a. Prepare post data

Aggregate node (keeps data structure intact for next nodes).

10a. Download image from Google Drive

Uses the Media URL (Google Drive sharing link) to download the image file. Supports:

The image is downloaded as binary data.

11a. Publish creative post to LinkedIn

Uses n8n’s LinkedIn node with these settings:

The LinkedIn API returns a URN (unique post identifier).

12a. Save post URL & mark published

Constructs the LinkedIn post URL:

https://www.linkedin.com/feed/update/{urn}

Then updates the Google Sheet row:


Branch B: Article Post with Link

7b. Mark article as scheduled

Updates Google Sheet: Approval Status = “Scheduled”

8b. Wait until article scheduled time

Same Wait node logic as Creative Posts—pauses until exact scheduled time with timezone conversion.

9b. Prepare article data

Aggregate node.

10b. Publish article link to LinkedIn

Uses LinkedIn node with these settings:

LinkedIn scrapes the article URL and creates a rich preview card.

11b. Save article URL & mark published

Same as Creative Posts—constructs post URL and updates sheet with “Published” status.


Setup requirements

Tools you’ll need:

Estimated setup time: 35–40 minutes


Configuration steps

1. Set up LinkedIn Community Management API

2. Find your LinkedIn Organization ID

Method 1 (URL):

Method 2 (API):

3. Set up Google Sheets

Create two sheets in one Google Sheets document:

Sheet 1: “.env” (credentials)

LinkedIn Organization ID
56420402

Sheet 2: “Post URL” (content calendar)

Scheduled OnPlatformPost TypeCaptionMedia URLApproval StatusPost URLrow_number
2025-10-30 10:00LinkedInCreative PostExcited to announce our new product!https://drive.google.com/file/d/xxxGood1
2025-10-30 14:00LinkedInArticleCheck out our latest blog posthttps://blog.example.com/postGood2

Important column details:

4. Connect Google Sheets OAuth

5. Connect Google Drive OAuth

6. Update LinkedIn Organization ID

Open these nodes and replace “56420402” with your organization ID:

7. Adjust timezone (if needed)

If your content calendar uses a different timezone than Eastern:

If your n8n server is not in India Time:

8. Test the workflow

9. Activate the workflow


Use cases

Social media managers: Schedule 15-20 LinkedIn posts per week from one Google Sheet. Team members add content, you approve, workflow handles precise timing and publishing—no manual LinkedIn.com logins.

B2B marketing teams: Maintain consistent LinkedIn company page presence with thought leadership articles, product updates, and team highlights. Schedule weeks in advance, let automation publish at optimal times.

Content creators: Batch-create LinkedIn content on Mondays, schedule throughout the week with precise timing. Focus on creation, not distribution—workflow handles publishing.

Agencies managing client pages: One Google Sheet per client, separate workflows per organization ID. Centralized content calendar with approval workflow before posting to client pages.

Recruiting teams: Schedule hiring posts, culture updates, and employee spotlights to maintain active company presence. Track all post URLs for performance analysis.

Personal brands using company pages: If you manage a LinkedIn company page for your personal brand or business, schedule promotional content, case studies, and announcements with professional timing control.


Customization options

Process multiple posts per run

Change “Process First Post Only” node logic:

Change scheduling frequency

Edit the “Run Every Hour” cron expression:

Add video post support

LinkedIn supports video posts via Community Management API:

Support personal profiles

If you want to post to personal profiles (not organization):

Add Slack notifications

After publishing nodes, add:

Multi-organization support

Modify .env sheet to support multiple company pages:

Organization NameLinkedIn Organization ID
Main Brand56420402
Sub Brand78901234

Add “Organization Name” column to Post URL sheet, then filter and route by organization.


Troubleshooting

Posts not publishing

Wait node not working

Images not downloading from Google Drive

Multiple posts with same time

Sheet not updating

Article previews not showing


Resources


Support

Need help or custom development?

📧 Email: info@isawow.com
🌐 Website: https://isawow.com/

🔗 Nodes Used

Google Sheets, Google Drive, LinkedIn, Schedule Trigger

đŸ“„ Import

Download workflow.json and import into n8n: Workflow menu → Import from File

📖 Importing guide · 🔑 Credential setup