Я очень новичок в AppleScript. Я нашел этот сценарий для использования с GeekTool Geeklet, чтобы показать онлайн-пользователей Skype. Когда я запускаю AppleScript, я получаю сообщение об ошибке, что «skype_id» не определен. Я не могу найти, где/почему он не определен. По-видимому, этот же скрипт работал в прошлом.
Вот ошибка: ошибка "Переменная skype_id не определена". номер -2753 из "skype_id"
Вот сценарий:
on remvix(ix, ls)
if ls is {} then
return {}
else if ix is 1 then
return rest of ls
else
return {item 1 of ls} & remvix(ix - 1, rest of ls)
end if
end remvix
on tail(astring, k)
return do shell script "echo '" & astring & "' | awk '{{i = " & k & "; while ( i <= NF-1 ) {printf $i \" \"; i++}; printf $i}}'"
end tail
property onlinegroup : 0
on getgroup()
tell application "Skype"
if my checkgroup(onlinegroup) is true then
return onlinegroup
else
set hardwired to send command "search groups hardwired" script name "online users"
set hardwired to my tail(hardwired, 2)
set hardwired to text items of hardwired
repeat with i in hardwired
if my checkgroup(i) is true then
return i
end if
end repeat
end if
end tell
end getgroup
on checkgroup(group_id)
tell application "Skype"
set grouptype to send command "get group " & group_id & " type" script name "online users"
set grouptype to my tail(grouptype, 4)
if grouptype is "ONLINE_FRIENDS" then
return true
else
return false
end if
end tell
end checkgroup
property dropped : 0
set text item delimiters to ", "
set onlineusers to {}
tell application "System Events"
set powerCheck to ((application processes whose (name is equal to "Skype")) count)
if powerCheck = 0 then
set end of onlineusers to " Skype not running"
else
tell application "Skype"
set onlinegroup to my getgroup()
set skype_id to send command "get group " & onlinegroup & " users" script name "online users"
set skype_id to my tail(skype_id, 4)
set skype_id to text items of skype_id
repeat with j from 1 to count skype_id
if item j of skype_id is "echo123" then
set skype_id_new to my remvix(j, skype_id)
set dropped to 1
end if
end repeat
if dropped is 1 then
set skype_id to skype_id_new
end if
repeat with i in skype_id
set aUser to send command "get user " & i & " fullname" script name "online users"
set aUser to my tail(aUser, 4)
if aUser is "" then set aUser to i
set amoodtext to send command "get user " & i & " mood_text" script name "online users"
set amoodtext to my tail(amoodtext, 4)
if amoodtext is "" then
set end of onlineusers to aUser
else
set end of onlineusers to aUser & " (" & amoodtext & ")"
end if
end repeat
if (count skype_id) > 0 then
set item 1 of onlineusers to " " & item 1 of onlineusers
else
set beginning of onlineusers to " No Contacts Online"
end if
return onlineusers
end tell
end if
end tell
Заранее спасибо за помощь.