Chrome에서 이름으로 탭을 찾는 AppleScript


3

이름으로 탭을 찾고 값을 반환하는 방법 (예 : 탭 2)을 잊어 버리고 결국 탭을 활성 탭으로 설정하는 방법을 잊었습니다.

다음을 시도했지만 작동하지 않습니다.

set titleString to "
"

tell application "Google Chrome"
    set window_list to every window # get the windows

    repeat with the_window in window_list # for every window
        set tab_list to every tab in the_window # get the tabs

        repeat with the_tab in tab_list # for every tab
            set the_title to the title of the_tab # grab the title
            if the_tab contains (Name to search" as text) then
                display notification "the_tab"
            end if
             return # concatenate
        end repeat
    end repeat
end tell

또한 JavaScript로 무언가를 시작하려고했습니다.

tell application "Google Chrome"
    set window_list to every window
    repeat with the_window in window_list
        set tab_list to every tab in the_window
        tell tab_list to set TheTab to execute javascript "document.title"
    end repeat
end tell

그러나 나는 얻는다 :

{«클래스 CrTb»id 4 응용 프로그램 "Google Chrome"의 창 ID 1,«클래스 CrTb»id 9 응용 프로그램 "Google Chrome"의 창 id 1,«class CrTb»id 2 응용 프로그램 "Google Chrome의 창 id 1 ","Google Chrome "응용 프로그램의 창 ID 1 중"class CrTb»id 189 "는"실행 "메시지를 이해하지 못합니다.

어떻게 진행할 수 있습니까?

답변:


2

달성하려는 전체 범위를 모르는 경우 다음 코드 가 필요한 것보다 많을 수 있습니다. 그러나 탭의 이름을 검색 한 다음 검색 문자열이 포함 된 탭을로 설정합니다 active tab.

코드 아래는의 재 작업입니다 코드 에 제시 애플 스크립트로 찾기 사파리 탭 . 변경할 수있게되었습니다에 좋은했을 tell application "Safari"tell application "Google Chrome"스크립트는 작동했지만 때문에 차이의 속성 이 작동하지 왜 두 앱 사이에 탭의이입니다.

스크립트의 기능 :

  • 탭 이름 내에서 검색 할 내용을 입력 할 수있는 대화 상자를 표시합니다.
  • 검색 문자열이 하나의 탭에서만 일치하면 해당 탭이로 설정되어 active tab index탭이 현재 탭임을 의미합니다. 창이 두 개 이상인 경우 해당 탭이 포함 된 창이 다른 모든 Chrome 창 앞에 나타납니다.
  • 검색 문자열이 여러 개의 일치를하는 경우 선택할 수있는 목록 대화 상자가 표시되고 해당 탭이로 설정되어 active tab index탭이 현재 탭임을 의미합니다. 창이 두 개 이상인 경우 해당 탭이 포함 된 창이 다른 모든 Chrome 창 앞에 나타납니다.
  • 검색 문자열이 일치하지 않으면 "일치 할 수 없습니다!"라는 대화 상자가 나타납니다. 가 표시됩니다.

set searchString to text returned of (display dialog "Enter a string to search for:" default answer "" with title "Find Google Chrome Tab")

tell application "Google Chrome"
    set win_List to every window
    set win_MatchList to {}
    set tab_MatchList to {}
    set tab_NameMatchList to {}
    repeat with win in win_List
        set tab_list to every tab of win
        repeat with t in tab_list
            if searchString is in (title of t as string) then
                set end of win_MatchList to win
                set end of tab_MatchList to t
                set end of tab_NameMatchList to (id of win as string) & ".  " & (title of t as string)
            end if
        end repeat
    end repeat
    if (count of tab_MatchList) is equal to 1 then
        set w to item 1 of win_MatchList
        set index of w to 1
        my setActiveTabIndex(t, searchString)
    else if (count of tab_MatchList) is equal to 0 then
        display dialog "No match was found!" buttons {"OK"} default button 1
    else
        set which_Tab to choose from list of tab_NameMatchList with prompt "The following Tabs matched, please select one:"
        if which_Tab is not equal to false then
            set oldDelims to (get AppleScript's text item delimiters)
            set AppleScript's text item delimiters to "."
            set tmp to text items of (which_Tab as string)
            set w to (item 1 of tmp) as integer
            set AppleScript's text item delimiters to oldDelims
            set index of window id w to 1
            my setActiveTabIndex(t, searchString)
        end if
    end if
end tell

on setActiveTabIndex(t, searchString)
    tell application "Google Chrome"
        set i to 0
        repeat with t in tabs of front window
            set i to i + 1
            if title of t contains searchString then
                set active tab index of front window to i
                return
            end if
        end repeat
    end tell
end setActiveTabIndex

@KevinCork, 나는 이전 상태 를 설명하고 대화 상자 에서 반환 된 것을 얻기 위해 변경 한 후 재설정하기 위해 두 줄의 코드 를 추가 AppleScript's text item delimiters했습니다 . 이 특정 인스턴스에서는 주어진 스크립트에서이 코드 만 사용하더라도 실제로는 중요하지 않습니다. 그러나 기본 설정을 수정할 때 더 나은 프로그래밍 방법으로 간주됩니다. window idlist
user3439894

이것은 매우 편리하고 마지막 질문입니다. 탭을 찾을 때 나중에 다른 스크립트 줄과 함께 사용하기 위해 활성 탭 인덱스를 저장하는 방법은 무엇입니까? 예를 들어 "tell application"Google Chrome "tell tab Javascript "document.getElementsByClassName ( 'field simple-field align') [0] .innerHTML;"을 실행하도록 VariableOfTheTextFound를 설정하는 창 1의 3-이전 색인으로 "창 1의 탭 3"을 대체 할 수 있습니까?
Kevin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.