A Python library to dynamically generate Google Slides from templates using text, charts, and tables.
- 🔤 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
urlproperty
- Enable Google Slides API and Google Drive API on Google Cloud
- Create a service account, download the
credentials.json - Share your template Google Slides file with the service account
First install the package:
pip install slidioThen, 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)# 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}")pip install -e .- Installer uv (si ce n'est pas déjà fait) :
pip install uv- Installer les dépendances de développement :
uv pip install -e ".[dev]"- Installer pre-commit :
pip install pre-commit
pre-commit install- Installer les hooks Git :
pre-commit installpytestruff check .
ruff format .mypy .py_slidio/
├── __init__.py
├── client.py
├── components/
│ ├── __init__.py
│ ├── text.py
│ ├── graph.py
│ └── table.py
└── utils.pyUse {{ 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
Contributions are welcome! Please feel free to submit a Pull Request.