Skip to content

Google Slides Integration

Enable your agents to create, edit, and manage Google Slides presentations. Create presentations, update content, import data from Google Sheets, manage pages and thumbnails, and streamline your presentation workflows with AI-powered automation.

Before using the Google Slides integration, ensure you have:

  • A CrewAI AMP account with an active subscription
  • A Google account with Google Slides access
  • Connected your Google account through the Integrations page
  1. Navigate to CrewAI AMP Integrations
  2. Find Google Slides in the Authentication Integrations section
  3. Click Connect and complete the OAuth flow
  4. Grant the necessary permissions for presentations, spreadsheets, and drive access
  5. Copy your Enterprise Token from Integration Settings
Terminal window
uv add crewai-tools
Terminal window
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"

Or add it to your .env file:

CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
google_slides/create_blank_presentation

Description: Creates a blank presentation with no content.

Parameters:

  • title (string, required): The title of the presentation.
google_slides/get_presentation_metadata

Description: Get lightweight metadata about a presentation (title, slide count, slide IDs). Use this first before fetching full content.

Parameters:

  • presentationId (string, required): The ID of the presentation to retrieve.
google_slides/get_presentation_text

Description: Extract all text content from a presentation. Returns slide IDs and text from shapes and tables only (no formatting).

Parameters:

  • presentationId (string, required): The ID of the presentation.
google_slides/get_presentation

Description: Retrieves a presentation by ID.

Parameters:

  • presentationId (string, required): The ID of the presentation to retrieve.
  • fields (string, optional): The fields to include in the response. Use this to improve performance by only returning needed data.
google_slides/batch_update_presentation

Description: Applies updates, add content, or remove content from a presentation.

Parameters:

  • presentationId (string, required): The ID of the presentation to update.
  • requests (array, required): A list of updates to apply to the presentation.
    [
    {
    "insertText": {
    "objectId": "slide_id",
    "text": "Your text content here"
    }
    }
    ]
  • writeControl (object, optional): Provides control over how write requests are executed.
    {
    "requiredRevisionId": "revision_id_string"
    }
google_slides/get_slide_text

Description: Extract text content from a single slide. Returns only text from shapes and tables (no formatting or styling).

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • pageObjectId (string, required): The ID of the slide/page to get text from.
google_slides/get_page

Description: Retrieves a specific page by its ID.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • pageObjectId (string, required): The ID of the page to retrieve.
google_slides/get_thumbnail

Description: Generates a page thumbnail.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • pageObjectId (string, required): The ID of the page for thumbnail generation.
google_slides/create_slide

Description: Add an additional blank slide to a presentation. New presentations already have one blank slide - check get_presentation_metadata first. For slides with title/body areas, use create_slide_with_layout instead.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • insertionIndex (integer, optional): Where to insert the slide (0-based). If omitted, adds at the end.
google_slides/create_slide_with_layout

Description: Create a slide with a predefined layout containing placeholder areas for title, body, etc. This is better than create_slide for structured content. After creating, use get_page to find placeholder IDs, then insert text into them.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • layout (string, required): Layout type. One of: BLANK, TITLE, TITLE_AND_BODY, TITLE_AND_TWO_COLUMNS, TITLE_ONLY, SECTION_HEADER, ONE_COLUMN_TEXT, MAIN_POINT, BIG_NUMBER. TITLE_AND_BODY is best for title+description. TITLE for title-only slides. SECTION_HEADER for section dividers.
  • insertionIndex (integer, optional): Where to insert (0-based). Omit to add at end.
google_slides/create_text_box

Description: Create a text box on a slide with content. Use this for titles, descriptions, paragraphs - not tables. Optionally specify position (x, y) and size (width, height) in EMU units (914400 EMU = 1 inch).

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The ID of the slide to add the text box to.
  • text (string, required): The text content for the text box.
  • x (integer, optional): X position in EMU (914400 = 1 inch). Default: 914400 (1 inch from left).
  • y (integer, optional): Y position in EMU (914400 = 1 inch). Default: 914400 (1 inch from top).
  • width (integer, optional): Width in EMU. Default: 7315200 (~8 inches).
  • height (integer, optional): Height in EMU. Default: 914400 (~1 inch).
google_slides/delete_slide

Description: Remove a slide from the presentation. Use get_presentation first to find the slide ID.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The object ID of the slide to delete. Get from get_presentation.
google_slides/duplicate_slide

Description: Create a copy of an existing slide. The duplicate is inserted immediately after the original.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The object ID of the slide to duplicate. Get from get_presentation.
google_slides/move_slides

Description: Reorder slides by moving them to a new position. Slide IDs must be in their current presentation order (no duplicates).

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideIds (array of strings, required): Array of slide IDs to move. Must be in current presentation order.
  • insertionIndex (integer, required): Target position (0-based). 0 = beginning, slide count = end.
google_slides/insert_youtube_video

Description: Embed a YouTube video on a slide. The video ID is the value after “v=” in YouTube URLs (e.g., for youtube.com/watch?v=abc123, use “abc123”).

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The ID of the slide to add the video to. Get from get_presentation.
  • videoId (string, required): The YouTube video ID (the value after v= in the URL).
google_slides/insert_drive_video

Description: Embed a video from Google Drive on a slide. The file ID can be found in the Drive file URL.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The ID of the slide to add the video to. Get from get_presentation.
  • fileId (string, required): The Google Drive file ID of the video.
google_slides/set_slide_background_image

Description: Set a background image for a slide. The image URL must be publicly accessible.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The ID of the slide to set the background for. Get from get_presentation.
  • imageUrl (string, required): Publicly accessible URL of the image to use as background.
google_slides/create_table

Description: Create an empty table on a slide. To create a table with content, use create_table_with_content instead.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The ID of the slide to add the table to. Get from get_presentation.
  • rows (integer, required): Number of rows in the table.
  • columns (integer, required): Number of columns in the table.
google_slides/create_table_with_content

Description: Create a table with content in one action. Provide content as a 2D array where each inner array is a row. Example: [[“Header1”, “Header2”], [“Row1Col1”, “Row1Col2”]].

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • slideId (string, required): The ID of the slide to add the table to. Get from get_presentation.
  • rows (integer, required): Number of rows in the table.
  • columns (integer, required): Number of columns in the table.
  • content (array, required): Table content as 2D array. Each inner array is a row. Example: [[“Year”, “Revenue”], [“2023”, “$10M”]].
google_slides/import_data_from_sheet

Description: Imports data from a Google Sheet into a presentation.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • sheetId (string, required): The ID of the Google Sheet to import from.
  • dataRange (string, required): The range of data to import from the sheet.
google_slides/upload_file_to_drive

Description: Uploads a file to Google Drive associated with the presentation.

Parameters:

  • file (string, required): The file data to upload.
  • presentationId (string, required): The ID of the presentation to link the uploaded file.
google_slides/link_file_to_presentation

Description: Links a file in Google Drive to a presentation.

Parameters:

  • presentationId (string, required): The ID of the presentation.
  • fileId (string, required): The ID of the file to link.
google_slides/get_all_presentations

Description: Lists all presentations accessible to the user.

Parameters:

  • pageSize (integer, optional): The number of presentations to return per page.
  • pageToken (string, optional): A token for pagination.
google_slides/delete_presentation

Description: Deletes a presentation by ID.

Parameters:

  • presentationId (string, required): The ID of the presentation to delete.
from crewai import Agent, Task, Crew
# Create an agent with Google Slides capabilities
slides_agent = Agent(
role="Presentation Manager",
goal="Create and manage presentations efficiently",
backstory="An AI assistant specialized in presentation creation and content management.",
apps=['google_slides'] # All Google Slides actions will be available
)
# Task to create a presentation
create_presentation_task = Task(
description="Create a new presentation for the quarterly business review with key slides",
agent=slides_agent,
expected_output="Quarterly business review presentation created with structured content"
)
# Run the task
crew = Crew(
agents=[slides_agent],
tasks=[create_presentation_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
content_manager = Agent(
role="Content Manager",
goal="Manage presentation content and updates",
backstory="An AI assistant that focuses on content creation and presentation updates.",
apps=[
'google_slides/create_blank_presentation',
'google_slides/batch_update_presentation',
'google_slides/get_presentation'
]
)
# Task to create and update presentations
content_task = Task(
description="Create a new presentation and add content slides with charts and text",
agent=content_manager,
expected_output="Presentation created with updated content and visual elements"
)
crew = Crew(
agents=[content_manager],
tasks=[content_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
data_visualizer = Agent(
role="Data Visualizer",
goal="Create presentations with data imported from spreadsheets",
backstory="An AI assistant that specializes in data visualization and presentation integration.",
apps=['google_slides']
)
# Task to create data-driven presentations
visualization_task = Task(
description="""
1. Create a new presentation for monthly sales report
2. Import data from the sales spreadsheet
3. Create charts and visualizations from the imported data
4. Generate thumbnails for slide previews
""",
agent=data_visualizer,
expected_output="Data-driven presentation created with imported spreadsheet data and visualizations"
)
crew = Crew(
agents=[data_visualizer],
tasks=[visualization_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
library_manager = Agent(
role="Presentation Library Manager",
goal="Manage and organize presentation libraries",
backstory="An AI assistant that manages presentation collections and file organization.",
apps=['google_slides']
)
# Task to manage presentation library
library_task = Task(
description="""
1. List all existing presentations
2. Generate thumbnails for presentation previews
3. Upload supporting files to Drive and link to presentations
4. Organize presentations by topic and date
""",
agent=library_manager,
expected_output="Presentation library organized with thumbnails and linked supporting files"
)
crew = Crew(
agents=[library_manager],
tasks=[library_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
presentation_automator = Agent(
role="Presentation Automator",
goal="Automate presentation creation and management workflows",
backstory="An AI assistant that automates complex presentation workflows and content generation.",
apps=['google_slides']
)
# Complex presentation automation task
automation_task = Task(
description="""
1. Create multiple presentations for different departments
2. Import relevant data from various spreadsheets
3. Update existing presentations with new content
4. Generate thumbnails for all presentations
5. Link supporting documents from Drive
6. Create a master index presentation with links to all others
""",
agent=presentation_automator,
expected_output="Automated presentation workflow completed with multiple presentations and organized structure"
)
crew = Crew(
agents=[presentation_automator],
tasks=[automation_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
template_creator = Agent(
role="Template Creator",
goal="Create presentation templates and standardized content",
backstory="An AI assistant that creates consistent presentation templates and content standards.",
apps=['google_slides']
)
# Task to create templates
template_task = Task(
description="""
1. Create blank presentation templates for different use cases
2. Add standard layouts and content placeholders
3. Create sample presentations with best practices
4. Generate thumbnails for template previews
5. Upload template assets to Drive and link appropriately
""",
agent=template_creator,
expected_output="Presentation templates created with standardized layouts and linked assets"
)
crew = Crew(
agents=[template_creator],
tasks=[template_task]
)
crew.kickoff()

Permission Errors

  • Ensure your Google account has appropriate permissions for Google Slides
  • Verify that the OAuth connection includes required scopes for presentations, spreadsheets, and drive access
  • Check that presentations are shared with the authenticated account

Presentation ID Issues

  • Verify that presentation IDs are correct and presentations exist
  • Ensure you have access permissions to the presentations you’re trying to modify
  • Check that presentation IDs are properly formatted

Content Update Issues

  • Ensure batch update requests are properly formatted according to Google Slides API specifications
  • Verify that object IDs for slides and elements exist in the presentation
  • Check that write control revision IDs are current if using optimistic concurrency

Data Import Issues

  • Verify that Google Sheet IDs are correct and accessible
  • Ensure data ranges are properly specified using A1 notation
  • Check that you have read permissions for the source spreadsheets

File Upload and Linking Issues

  • Ensure file data is properly encoded for upload
  • Verify that Drive file IDs are correct when linking files
  • Check that you have appropriate Drive permissions for file operations

Page and Thumbnail Operations

  • Verify that page object IDs exist in the specified presentation
  • Ensure presentations have content before attempting to generate thumbnails
  • Check that page structure is valid for thumbnail generation

Pagination and Listing Issues

  • Use appropriate page sizes for listing presentations
  • Implement proper pagination using page tokens for large result sets
  • Handle empty result sets gracefully

Need Help?

Contact our support team for assistance with Google Slides integration setup or troubleshooting.