Skip to content

mickaelandrieu/slidio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slidio : The Google Slides Python Client

A Python library to dynamically generate Google Slides from templates using text, charts, and tables.

🚀 Features

  • 🔤 Replace text in placeholder text boxes using update_text(text_id, text_value)
  • 📊 Insert matplotlib figures in place of text boxes using insert_graph(text_id, matplotlib_figure)
  • 📋 Insert tables using insert_table(text_id, data)
  • 🪄 Designed for templating: works with alt-text-based placeholders (e.g. {{ TITLE }}, {{ BODY1 }})
  • 📄 Create new presentations from templates with from_template()
  • 👥 Share presentations with viewers and contributors
  • 🔗 Get presentation URL with url property

🔧 Setup

  1. Enable Google Slides API and Google Drive API on Google Cloud
  2. Create a service account, download the credentials.json
  3. Share your template Google Slides file with the service account

🧱 Usage

Basic Usage

First install the package:

pip install slidio

Then, authenticate on Google Slides and build your "recipe":

from py_slidio import SlidioClient
from google.oauth2 import service_account
import matplotlib.pyplot as plt

# Setup credentials and client
creds = service_account.Credentials.from_service_account_file(
    "credentials.json",
    scopes=[
        "https://www.googleapis.com/auth/presentations",
        "https://www.googleapis.com/auth/drive"
    ]
)

client = SlidioClient(creds, "your-presentation-id")

# Replace text
client.text.update_text("TITLE", "Quarterly Results")

# Insert graph
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 6, 5])
client.graph.insert_graph("BODY1", fig)

# Insert table
data = [
    ["Name", "Score"],
    ["John", "85"],
    ["Jane", "92"]
]
client.table.insert_table("TABLE1", data)

Creating from Template

# Create a new presentation from a template
client = SlidioClient.from_template(
    credentials=creds,
    template_id="template-presentation-id",
    new_title="My New Presentation",
    viewers_emails=["viewer@example.com"],
    contributors_emails=["editor@example.com"]
)

# Get the presentation URL
print(f"Presentation URL: {client.url}")

📦 Installation

Installation du package

pip install -e .

Installation de l'environnement de développement

  1. Installer uv (si ce n'est pas déjà fait) :
pip install uv
  1. Installer les dépendances de développement :
uv pip install -e ".[dev]"
  1. Installer pre-commit :
pip install pre-commit
pre-commit install
  1. Installer les hooks Git :
pre-commit install

🛠️ Développement

Exécuter les tests

pytest

Vérifier le code

ruff check .
ruff format .

Vérifier les types

mypy .

📁 Directory Structure

py_slidio/
├── __init__.py
├── client.py
├── components/
│   ├── __init__.py
│   ├── text.py
│   ├── graph.py
│   └── table.py
└── utils.py

💡 Placeholder Design

Use {{ PLACEHOLDER_ID }} as the alt text in your Google Slides text boxes.

For example:

  • {{ TITLE }} for the presentation title
  • {{ BODY1 }} for the first body text
  • {{ GRAPH1 }} for the first graph
  • {{ TABLE1 }} for the first table

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

A Python library to dynamically generate Google Slides from templates using text, charts, and tables.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages