Store a reference to a
id (which is fixed):
set T to the id of the current tab in the front window
set the URL of tab id T of the front window to "https://apple.stackexchange.com/"
Or by object (which is fixed):
set T to the current tab in the front window
set the URL of T to "https://apple.stackexchange.com/"
BUT not by
index (which changes).
You have a couple of options when storing references to objects (such as
tabs) in AppleScript. Specifically, you're asking about the
id property of the tab. You have to be mindful here: there are two ways of referencing Chrome
windows using numbers:
tab 2 of window 1
This refers to the ordered position of the tab from leftmost to rightmost, i.e.
tab 1 refers to the
tab 2 refers to tab to the right of
tab 1, etc..
These indices change if tabs move, open and close. For example, if you close the middle of three tabs,
tab 3 then becomes
windows collection, the
index is the ordered position of the window from frontmost to rearmost, ordered by which window most recently received focus.
window 1 is synonymous with the
front window, and currently has focus. When you switch to a different Chrome window, this now becomes
window 1, and the previous
window 1 is now
Therefore, referencing an object and storing references to that object by its
index property is a very unreliable method, with the exception of references to the
front window or
front tab where it only matters that the object currently has focus, regardless of which one it is. Therefore,
tell the front tab of the front window to... is perfectly reasonable use of the
index, and probably the only one.
Note, that the
index property is a named property for
window objects, which can be read and set (set it to
1 to bring it to the front). Although
tab objects do get referred to by an
index property, it is not a named property that one can read or set.
tab id 54 of window id 53
This is a unique, fixed property assigned to each object at the moment of its creation, and it typically ascends in value as each new object in a family of similar objects is created. So, generally speaking,
window id 2088 was created after
window id 25.
id provides a fixed reference value with which you can reliably and safely store objects in variables for later use, knowing that they will still refer to the exact same object regardless of where in your script the variable is evaluated and how the arrangement of objects has changed (until the object is destroyed).
Setting and Getting The Variable
When you wish to assign a reference to a
tab or a
window to a variable, you can choose to:
either store its actual
id property value, then reference the
tab by its
id later on, the value of which will be the value of the variable;
or you can store the entire object itself in an AppleScript variable. This is often the easiest.
To store by
id, you can do so like this:
set T to the id of the active tab of the front window
In Chrome, the
active tab of the front window might return
tab id 34 of window id 2045. The
id of that
tab object is
T gets assigned the value
Then, later, to perform actions on that same tab, which may no longer be the
active tab, you can do so like this:
front window is still
window id 2045; otherwise, you'll have to store the
window id value in a separate value too.)
Note that the reference is to a
tab id T and not
tab T, which would be
tab 34 (i.e.
index 34, if you had 34 tabs open). The
id label must be included.
To store the
tab object itself, which is often preferable, you do so like this:
set T to the front tab of the front window
Although I've implicitly used
index values here, AppleScript actually references the
tab and the
window both by their
id values (which it does so in almost all situations). So if you evaluate
T, you'll find it contains
tab id 34 of window id 2045 and not
tab 1 of window 1.
You can also assign the
tab object to a variable like this:
set T to the first tab of window id 2045 whose URL is "chrome://newtab/"
T will contain
tab id 30 of window id 2045, which you can later call on to perform actions within/upon:
set the URL of T to "https://stackexchange.com"
tell T to close