Skip to main content

Gmail Drafter: Create Mail Merge Drafts

Simple tool to take a CSV and a template and create drafts in your Gmail. Useful for sending emails to large-ish numbers of people where you want to slightly customize the emails for each user. You can quickly run through drafts, customize it, and send.

Installation

pip install -U gmail-draft-creator

Usage

Usage: gmail-draft-creator [OPTIONS]

Options:
  --csv PATH       Path to the CSV file.  [required]
  --template PATH  Path to the template file.  [required]
  --subject TEXT   Subject for the email drafts.
  --dry-run        Run script without creating drafts.
  --help           Show this message and exit.

You can also import the create_draft function and use it in your own scripts.

CSV Files

Must contain an email column (case insensitive).

Each column in the CSV is passed as a parameter to the provided template. The column name is stripped of whitespace, lowercased, and stripped all non-alpha characters. For example, a column named First Name would be passed as $firstname in the template.

Template Files

You can include subject line and variables in the template file:

Subject: Hello $NAME

Hi, here's another ${REASON} why I'm emailing you.

CSV Files

A CSV file that would work with this template might be something like this:

Email,Name,Reason,OtherColumn,...
joe@test.com,Joe,reminder,...
jeff@email.com,Jeff,sales pitch,...

Setup

You need to create a "OAuth 2.0 Client IDs" which has to be done with a Google Workspace (gsuite). This will not work on a personal gmail account (unless you create a app on a workspace and add your personal account as a test account).

Generating a Gmail API Token

  1. Navigate to the Google Cloud Console. https://console.developers.google.com/
  2. Create a new project or select an existing one.
  3. Go to "APIs & Services" -> "Library" and enable the Gmail API.
  4. Navigate to "APIs & Services" -> "Credentials".
  5. Click "Create Credentials" -> "OAuth client ID".
  6. Select "Desktop app" as the application type, then click "Create".
  7. Download the JSON file, rename it to credentials.json, and place it in the root of this project.
  8. Run the script and oauth into your account

If you want to edit scopes on an existing application, you can:

  1. OAuth Consent Screen
  2. Edit
  3. Continue to step 2
  4. Add or remove scopes
  5. Add scopes and save

Credential Scopes Needed

Two main scopes are required for this:

  • https://www.googleapis.com/auth/gmail.compose
  • https://www.googleapis.com/auth/gmail.readonly

Some other scopes I'd add so you can reuse the credentials in other projects, like gmailctl or calendar scripts:

  • https://www.googleapis.com/auth/calendar.readonly
  • https://www.googleapis.com/auth/calendar.event
  • https://www.googleapis.com/auth/gmail.labels
  • https://www.googleapis.com/auth/gmail.settings.basic

TODO

  • add credentials as a command line argument
  • add serialized token as a CLI argument

Metadata

Release files for gmail-draft-creator 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gmail-draft-creator 1.3.1
File Size Uploaded Provenance
gmail_draft_creator-1.3.1.tar.gz 5.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for gmail-draft-creator 1.3.1
File Interpreter ABI Platform
gmail_draft_creator-1.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.7 kB

Release files / gmail_draft_creator-1.3.1.tar.gz

Download URL gmail_draft_creator-1.3.1.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5eb23ab29ea40f78e101113fa3a14ace97b33cac276a6f7726cacd7c6507cfb4
BLAKE2b-256 checksum
How to use checksums
8203819c39ebd60f6912a7b0969ef88fa98f9ec75e256ca37f73d27730a42418
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.4 Linux/6.5.0-1018-azure

Release files / gmail_draft_creator-1.3.1-py3-none-any.whl

Download URL gmail_draft_creator-1.3.1-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1243b50319810f5c3f553db6ac2204a1804860cac43ce663c21cbbf32000d584
BLAKE2b-256 checksum
How to use checksums
52d75cf962bf55e89448a37a1847e22cb5ccbee150317ff7e6d7a521ff6bca61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.4 Linux/6.5.0-1018-azure

Security for gmail-draft-creator 1.3.1

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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