gravitas-md2gdocs
Convert Markdown to Google Docs API requests.
Installation
pip install gravitas-md2gdocs
To use the Google API helper functions:
pip install gravitas-md2gdocs[google]
Usage
Basic: Get API Requests
from gravitas_md2gdocs import to_requests
markdown = """
# My Document
This is **bold** and *italic* text.
- Bullet one
- Bullet two
> A blockquote
"""
requests = to_requests(markdown)
# Use with your own Google Docs API client
docs_service.documents().batchUpdate(
documentId=doc_id,
body={'requests': requests}
).execute()
Insert at a Specific Position
requests = to_requests(markdown, start_index=50)
Helper Functions (requires gravitas-md2gdocs[google])
from gravitas_md2gdocs import append, replace, insert_at, replace_range
# Append to end of document
append(docs_service, doc_id, "## New Section\n\nMore content")
# Replace entire document
replace(docs_service, doc_id, new_markdown)
# Insert at specific position
insert_at(docs_service, doc_id, "**inserted**", index=25)
# Replace a range (characters 10-50)
replace_range(docs_service, doc_id, "**replacement**", start=10, end=50)
Supported Markdown
| Syntax | Example |
|---|---|
| Headers | # H1 through ###### H6 |
| Bold | **bold** or __bold__ |
| Italic | *italic* or _italic_ |
| Bold + Italic | ***both*** |
| Strikethrough | ~~struck~~ |
| Inline code | `code` |
| Code blocks | ```code``` |
| Links | [text](url) |
| Bullet lists | - item or * item |
| Numbered lists | 1. item |
| Blockquotes | > quote |
Setting Up Google Docs API
- Create a project in Google Cloud Console
- Enable the Google Docs API
- Create credentials (OAuth 2.0 or Service Account)
- Install the client library:
pip install google-api-python-client google-auth
Example setup:
from google.oauth2 import service_account
from googleapiclient.discovery import build
credentials = service_account.Credentials.from_service_account_file(
'service-account.json',
scopes=['https://www.googleapis.com/auth/documents']
)
docs_service = build('docs', 'v1', credentials=credentials)
# Create a new doc
doc = docs_service.documents().create(body={'title': 'My Doc'}).execute()
doc_id = doc['documentId']
# Add content
from gravitas_md2gdocs import to_requests
requests = to_requests("# Hello World\n\nThis is **markdown**!")
docs_service.documents().batchUpdate(
documentId=doc_id,
body={'requests': requests}
).execute()
Alternative: Google Drive API with Native Markdown
As of July 2024, Google Drive API supports uploading markdown directly:
from googleapiclient.http import MediaInMemoryUpload
media = MediaInMemoryUpload(
markdown_text.encode('utf-8'),
mimetype='text/markdown'
)
file = drive_service.files().create(
body={
'name': 'My Document',
'mimeType': 'application/vnd.google-apps.document'
},
media_body=media
).execute()
Use gravitas-md2gdocs when you need to:
- Append/insert into existing documents
- Replace specific sections
- Have fine-grained control over formatting
License
MIT
Metadata
Release files for gravitas-md2gdocs 0.1.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 | |
|---|---|---|---|
| gravitas_md2gdocs-0.1.0.tar.gz | 48.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gravitas_md2gdocs-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.6 kB
Release files / gravitas_md2gdocs-0.1.0.tar.gz
| Download URL | gravitas_md2gdocs-0.1.0.tar.gz |
|---|---|
| Size | 48.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bb3122fe9fa35c528f3f00b785d3f1398d350082d5d03f60f56c895bdcc68033
|
|
BLAKE2b-256 checksum How to use checksums |
7e6c3c51b1deda0ee0dc83b3f5f37274434eb05aa2fa559906ac6c157de003e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 10, 2025.
Transparency logRelease files / gravitas_md2gdocs-0.1.0-py3-none-any.whl
| Download URL | gravitas_md2gdocs-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0cb0627779fdd65c1604818af4142eea1b25d055060183363de1bae4d9e46508
|
|
BLAKE2b-256 checksum How to use checksums |
2aadde3cb7a498c8b5ab69074741c1083d7b7f0d20edb1f437ea0c7dfb851668
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 10, 2025.
Transparency log