kla
kla

Reputation: 63

How to open a tab 2 on Google Chrome or Microsoft Edge if it doesn't exist?

I am new to AppleScript and tried an AppleScript solution to open up a tab and load a webpage:

tell application "Google Chrome"   -- or "Microsoft Edge"
    tell window 1
        tell tab 2
            set URL to "https://google.com/"
        end tell
    end tell
end tell

But if tab 2 doesn't exist, it won't do anything.

I then tried to solve it by checking whether an URL exist in any tab:

tell application "Google Chrome"
    repeat with w in windows
        set i to 1
        repeat with t in tabs of w
            if URL of t starts with "https://mail.google" then
                set active tab index of w to i
                set index of w to 1
                return
            end if
            set i to i + 1
        end repeat
    end repeat
    open location "https://mail.google.com/mail/u/0/#inbox"
end tell

But it is sort of an overkill, and it opens up a new tab, rather than opening up a tab 2.

I then tried

tell application "Google Chrome"   -- or "Microsoft Edge"
    tell window 1
        open tab 2     -- added this line
        tell tab 2
            set URL to "https://google.com/"
        end tell
    end tell
end tell

but no matter it is open tab 2 or activate tab 2 or start tab 2, it wouldn't work. How can we make it work and, in general, how to find out the vocabularies or verbs that we can use?

Upvotes: 1

Views: 681

Answers (1)

user3439894
user3439894

Reputation: 7555

open tab 2 is the problem. If a browser window exists and you want to create a new tab and set its URL, then:

tell application "Google Chrome" to ¬
    if exists front window then ¬
        make new tab at end of ¬
            tabs of front window ¬
            with properties ¬
            {URL:"https://www.example.com"}

If a browser window exists and you want to change the URL of tab 2, then:

tell application "Google Chrome" to ¬
    if exists front window then ¬
        tell front window to ¬
            if (exists tab 2) then ¬
                tell its tab 2 to ¬
                    set its URL to ¬
                        "https://www.example.com"

Notes:

  • The example AppleScript code works with Microsoft Edge too.
  • These examples can be expanded into normal block format using if statements to determine if Google Chrome and or Microsoft Edge exists, or are already running, and if running whether or not a window exists, etc. You just need to code it according to your needs/wants.
  • Have a look at AppleScript Language Guide
  • In Script Editor have a look at the Library for the AppleScript dictionary of any application you want to write code for. From the Window menu... Library     ⇧⌘L

The example AppleScript code below shows an example of coding for the existence of either Google Chrome or Microsoft Edge and whether or not they are running when you can then write code based on the conditions. As written it favors Google Chrome but if it does exist then Microsoft Edge runs its code. To favor Microsoft Edge change the primary if statement structure to accommodate.

tell application "System Events"
    set existsGoogleChrome to exists file "/Applications/Google Chrome.app"
    set existsMicrosoftEdge to exists file "/Applications/Microsoft Edge.app"
end tell

if existsGoogleChrome then
    if running of application "Google Chrome" then
        tell application "Google Chrome"
            # Do Something
        end tell
    else
        tell application "Google Chrome"
            # Do Something Else
        end tell
    end if
else
    if existsMicrosoftEdge then
        if running of application "Microsoft Edge" then
            tell application "Microsoft Edge"
                # Do Something
            end tell
        else
            tell application "Microsoft Edge"
                # Do Something Else
            end tell
        end if
    end if
end if

Upvotes: 1

Related Questions