Upload office files to Google Drive with auto-conversion to Docs/Sheets/Slides
Project description
goodoc
Upload .docx, .xlsx, and .pptx files to Google Drive with automatic conversion to native Google formats (Docs / Sheets / Slides). Integrates into macOS Finder as a right-click Quick Action.
Typical workflow: got a file to review → right-click → opens in Google Docs. No Word, no drag-and-drop.
Requirements
- macOS
- Python 3.10+
- pipx
- A Google Cloud project with Drive API enabled and an OAuth 2.0 Desktop credentials file
Installation
pipx install git+https://github.com/djachenko/goodoc.git
Or clone and install locally:
git clone https://github.com/djachenko/goodoc.git
cd goodoc
pipx install .
Google Cloud setup
- Go to console.cloud.google.com and create or select a project
- APIs & Services → Library → search for
Google Drive API→ Enable - APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID
- Application type: Desktop app
- Download the JSON file
- Place the file at
~/.goodoc/credentials.json:
mkdir -p ~/.goodoc
mv ~/Downloads/client_secret_*.json ~/.goodoc/credentials.json
On first run, a browser window will open for Google authorization. The token is saved to ~/.goodoc/token.json — subsequent runs are silent.
Usage
goodoc file.docx # upload and open in browser
goodoc file.xlsx --no-open # upload without opening
Supported formats:
| Extension | Converts to |
|---|---|
.docx |
Google Docs |
.xlsx |
Google Sheets |
.pptx |
Google Slides |
Finder integration (macOS Quick Action)
- Open Automator → New Document → Quick Action
- Set Workflow receives current:
files or foldersinFinder - Add a Run Shell Script action, set Pass input:
as arguments - Paste the script:
for f in "$@"; do
"$(which goodoc)" "$f"
done
- File → Save → name it
Open in Google Docs
Right-click any .docx, .xlsx, or .pptx in Finder → Quick Actions → Open in Google Docs.
If
which goodocdoesn't work in Automator, replace it with the full path fromwhich goodocin your terminal (e.g./Users/you/.local/bin/goodoc).
If the action doesn't appear in the menu: Finder → Finder menu → Services → Services Preferences… → find
Open in Google Docsand enable it.
Revoking access
To re-authorize, delete the token:
rm ~/.goodoc/token.json
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file goodoc-1.0.0.tar.gz.
File metadata
- Download URL: goodoc-1.0.0.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac0b0d972c0ca1c1769cbd8b29bdbbb5583485e3e73e16e1b21f0203c2459563
|
|
| MD5 |
e6dc962903b5c1092a19ecaf29127e3f
|
|
| BLAKE2b-256 |
f90e3b79a017ec3db559bf130a815bec32b01a191ef3e028db48edbb5f9fc8b8
|
Provenance
The following attestation bundles were made for goodoc-1.0.0.tar.gz:
Publisher:
release.yml on djachenko/goodoc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
goodoc-1.0.0.tar.gz -
Subject digest:
ac0b0d972c0ca1c1769cbd8b29bdbbb5583485e3e73e16e1b21f0203c2459563 - Sigstore transparency entry: 1759639889
- Sigstore integration time:
-
Permalink:
djachenko/goodoc@0f294314b10747646604adedfd06d997afc041ef -
Branch / Tag:
refs/heads/master - Owner: https://github.com/djachenko
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0f294314b10747646604adedfd06d997afc041ef -
Trigger Event:
push
-
Statement type:
File details
Details for the file goodoc-1.0.0-py3-none-any.whl.
File metadata
- Download URL: goodoc-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f47dfa530953a1be599e04d58c1c5a6f6fd1f582241e00f27ccaceffb741402a
|
|
| MD5 |
403f73587a85c5272c97ecb4c05cec7f
|
|
| BLAKE2b-256 |
39b8c1fa7fd14a6f5a999cceb95633fb357cd4150904646e6e3f8f2bcc66fdad
|
Provenance
The following attestation bundles were made for goodoc-1.0.0-py3-none-any.whl:
Publisher:
release.yml on djachenko/goodoc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
goodoc-1.0.0-py3-none-any.whl -
Subject digest:
f47dfa530953a1be599e04d58c1c5a6f6fd1f582241e00f27ccaceffb741402a - Sigstore transparency entry: 1759640308
- Sigstore integration time:
-
Permalink:
djachenko/goodoc@0f294314b10747646604adedfd06d997afc041ef -
Branch / Tag:
refs/heads/master - Owner: https://github.com/djachenko
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0f294314b10747646604adedfd06d997afc041ef -
Trigger Event:
push
-
Statement type: