Google Chrome – How to Bring an Existing GMail Tab to the Front

Hey Geir,

This was a bit pesky to write due to a bug in OSX affecting changing the index of windows in an application, but it's working.

The script is run from an 'Execute AppleScript' Action in Keyboard Maestro.

It will run faster if you save it as an AppleScript FILE using the Applescript Editor (pre-Yosemite) or the Script Editor (Yosemite) — then run it as a script file instead of as a text-script.

-Chris

-----------------------------------------------------------------
# Auth: Christopher Stone <scriptmeister@thestoneforge.com>
# dCre: 2015/05/14 12:30
# dMod: 2015/05/14 13:21
# Appl: Google Chrome, System Events
# Task: Bring Chrome Tab with Gmail to front if it exists - otherwise open Gmail in new window.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Google_Chrome, @System_Events, @GMail, @Open, @Switch, @Front
-----------------------------------------------------------------

set _win to false
tell application "Google Chrome"
   set {idList, urlList} to {id, URL} of every tab of every window
end tell

set AppleScript's text item delimiters to return

if (urlList as text) contains "https://mail.google.com/mail/" = true then
   set theWin to 1
   repeat with i in urlList
      set theTab to 1
      repeat with n in i
         if n starts with "https://mail.google.com/mail/" then
            set {_win, _tab} to {theWin, theTab}
         end if
         set theTab to theTab + 1
      end repeat
      set theWin to theWin + 1
   end repeat
end if

if _win ≠ false then
   tell application "System Events"
      if quit delay ≠ 0 then set quit delay to 0
      tell process "Google Chrome"
         perform action "AXRaise" of window _win
      end tell
   end tell
   tell application "Google Chrome"
      tell front window to set active tab index to _tab
   end tell
else
   tell application "Google Chrome"
      set newWin to make new window
      tell newWin to set URL of active tab to "https://mail.google.com/mail/u/0/?tab=wm#inbox"
   end tell
end if

-----------------------------------------------------------------