Skip to main content

gravitas-md2gdocs

CI PyPI version Python 3.10+ License: MIT

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

  1. Create a project in Google Cloud Console
  2. Enable the Google Docs API
  3. Create credentials (OAuth 2.0 or Service Account)
  4. 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)

Source distribution for gravitas-md2gdocs 0.1.0
File Size Uploaded
gravitas_md2gdocs-0.1.0.tar.gz 48.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gravitas-md2gdocs 0.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page