2017-02-03 1 views
0

이것은 지난 몇 가지 질문의 응용 프로그램과 동일한 코드이지만이 버전은 디버깅 도움말을 위해 "스크립트 편집기"에서 실행되도록 다시 작성되었습니다.왜 내가 가치가 아닌 제목을 물을 때 "가치를 얻을 수 없다"고보고합니까?

오류는이 코드의 마지막 줄에 의해 생성됩니다. 내게 필요한 옵션 검사기로 확인 () 모든 메뉴 항목에는 NIL 값이 있습니다. 그 이유는 특별히 제목을 대신 참조하는 이유입니다.

-- `menu_click`, by Jacob Rus, September 2006 
-- 
-- Accepts a list of form: `{"Finder", "View", "Arrange By", "Date"}` 
-- Execute the specified menu item. In this case, assuming the Finder 
-- is the active application, arranging the frontmost folder by date. 

on menuClick(mList) 
    local appName, topMenu, r 

    -- Validate our input 
    if mList's length < 3 then error "Menu list is not long enough" 

    -- Set these variables for clarity and brevity later on 
    set {appName, topMenu} to (items 1 through 2 of mList) 
    set r to (items 3 through (mList's length) of mList) 

    -- This overly-long line calls the menu_recurse function with 
    -- two arguments: r, and a reference to the top-level menu 
    tell application "System Events" to my menuClickRecurse(r, ((process appName)'s ¬ 
    (menu bar 1)'s (menu bar item topMenu)'s (menu topMenu))) 
end menuClick 

on menuClickRecurse(mList, parentObject) 
    local f, r 

    -- `f` = first item, `r` = rest of items 
    set f to item 1 of mList 
    if mList's length > 1 then set r to (items 2 through (mList's length) of mList) 

    -- either actually click the menu item, or recurse again 
    tell application "System Events" 
     if mList's length is 1 then 
      click parentObject's menu item f 
     else 
      my menuClickRecurse(r, (parentObject's (menu item f)'s (menu f))) 
     end if 
    end tell 
end menuClickRecurse 

local destination, libraryName, choices 
set destination to "/Users/bryandunphy/music" 
set libraryName to "Testing.xml" 
tell application "iTunes" to activate 
menuClick({"iTunes", "File", "Library", "Export Library…"}) 
tell application "System Events" to set the value of the text field "Save As:" of window "iTunes" of process "iTunes" to libraryName 
tell application "System Events" to tell process "iTunes" to tell its front window's group 1's pop up button 1 to click 
    tell application "System Events" to tell process "iTunes" to set choices to the title of every menu item of menu 1 of pop up button 1 of group 1 of its front window 
    repeat with ndx from 1 to count of choices 
    if the value of choices's item ndx is "" then 
     tell application "System Events" to tell process "iTunes" to select (the menu item of menu 1 of pop up button 1 of group 1 of its front window whose title is equal to item (ndx - 1) of choices) 
    end if 
end repeat 

답변

0

'선택이'변수는 문자열 목록이 아닌 메뉴 항목의 목록이 포함되어 있기 때문에, 그래서 the value of를 제거합니다.

whose 절 대신 ->whose title is equal to (....)의 메뉴 색인을 사용할 수 있습니다.

repeat with ndx from 1 to count of choices 
    if choices's item ndx is "" then 
     tell application "System Events" to tell process "iTunes" to select (menu item (ndx - 1) of menu 1 of pop up button 1 of group 1 of its front window) 
     exit repeat 
    end if 
end repeat