Skip to main content

Convert Markdown to Google Docs API requests

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gravitas_md2gdocs-0.1.0.tar.gz (48.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gravitas_md2gdocs-0.1.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file gravitas_md2gdocs-0.1.0.tar.gz.

File metadata

  • Download URL: gravitas_md2gdocs-0.1.0.tar.gz
  • Upload date:
  • Size: 48.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gravitas_md2gdocs-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bb3122fe9fa35c528f3f00b785d3f1398d350082d5d03f60f56c895bdcc68033
MD5 cd10fad354ea2f3f200becd6c976ade8
BLAKE2b-256 7e6c3c51b1deda0ee0dc83b3f5f37274434eb05aa2fa559906ac6c157de003e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravitas_md2gdocs-0.1.0.tar.gz:

Publisher: ci.yml on Significant-Gravitas/gravitas-md2gdocs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gravitas_md2gdocs-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gravitas_md2gdocs-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0cb0627779fdd65c1604818af4142eea1b25d055060183363de1bae4d9e46508
MD5 4d6b2ac04af833aadcfb8c2c1f42814d
BLAKE2b-256 2aadde3cb7a498c8b5ab69074741c1083d7b7f0d20edb1f437ea0c7dfb851668

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravitas_md2gdocs-0.1.0-py3-none-any.whl:

Publisher: ci.yml on Significant-Gravitas/gravitas-md2gdocs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page