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
urlproperty
🔧 Setup
- 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
🧱 Usage
Basic Usage
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
- 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 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.
Metadata
Release files for slidio 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| slidio-1.0.0.tar.gz | 9.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| slidio-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.2 kB
Release files / slidio-1.0.0.tar.gz
| Download URL | slidio-1.0.0.tar.gz |
|---|---|
| Size | 9.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
42ca02412077fe507b18e40ed584d0c0bc3e29a61690fa098f101105cb505c7f
|
|
BLAKE2b-256 checksum How to use checksums |
4ea7ca3f17e200f82e42ce8a2dd1d364d611e05e09318f153935231db40a054e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|
Release files / slidio-1.0.0-py3-none-any.whl
| Download URL | slidio-1.0.0-py3-none-any.whl |
|---|---|
| Size | 8.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4b13500cbd6a8cd79d02b4c2f415477fce46bfda054777030c2d4fa540dc0d81
|
|
BLAKE2b-256 checksum How to use checksums |
0b978eaea140b82a2a28bdb13fe908a6df31943f5d069e2b4c55f07e0c9f713f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|