Quickly Toggle Fonts in Google Docs
blackjack by Rural Warrior Photography is licensed under CC BY-ND
I spend a fair amount working in technical documents within Google Docs at work. Due to the content of these documents, there will be parts of them that visually resonate with a monospaced font (i.e., name of a class/module/method). Unfortunately, Google Docs does not natively support Markdown for code spans
by surrounding text with backtick quotes.
Mouse to the Font select and pick one → Click to see GIF ←
Use the menu search option via the keyboard Option+/ (or Alt+/) and type the font name, then push enter → Click to see GIF ←
Use a global hotkey Hyper+C to automate Option 2 (and let you toggle between two fonts) → Click to see GIF ←
The following is the dump of the AppleScript I’m using. It has some guards in place to ensure that it only works when your focus is in Google Chrome and the current tab is a Google Doc (or Sheet/Slide).
The fonts will toggle between Arial and Roboto Mono (although easy enough to modify to your own preference). The Font selector works for me… however Google could change it at anytime, breaking this flow.
This code can then be put into a global hotkey (using something like Alfred or Raycast).
# Check to make sure we are focused on Google Chrome
tell application "System Events"
set activeApp to name of first application process whose frontmost is true
if "Google Chrome" is not activeApp then
log "Google Chrome isn't active application"
return
end if
end tell
# Check to make sure we are in a https://docs.google.com/
tell application "Google Chrome"
set activeURL to get URL of active tab of first window
if activeURL does not contain "https://docs.google.com/" then
log "URL is not under https://docs.google.com"
return
end if
end tell
tell application "Google Chrome"
tell active tab of front window to set fontFamily to execute javascript "document.querySelector('#docs-font-family > div > div > div.goog-toolbar-menu-button-caption.goog-inline-block').innerHTML;"
if fontFamily is missing value then
log "No Font Found"
return
end if
end tell
tell application "System Events"
delay 0.2
keystroke "/" using option down
delay 0.2
if fontFamily = "Roboto Mono" then
keystroke "Arial"
else
keystroke "Roboto Mono"
end if
delay 0.2
keystroke return
end tell
According to Information for Third-party Applications on Mac “in order to protect users from injection of unwanted content” Chrome would prevent this type of manipulation by default.
In order to get this working you’ll need to tell Chrome to “Allow JavaScript from Apple Events” which is an option under View > Developer.