O parâmetro open
handler obtém uma lista de alias
objetos 1 As chaves ( {}
) em sua mensagem de erro indicam que o erro ocorreu enquanto ele estava tentando operar em um objeto de lista.
Assim, você precisa usar algo como set FolderPath to first item of the_dropped_folder
para trabalhar com um único item em vez da lista (e provavelmente dar ao parâmetro um nome no plural enquanto estiver nele para que ele “leia melhor”). Isso deve permitir que sua instrução set ParentPath to container of FolderPath
funcione corretamente.
A próxima declaração provavelmente falhará. ParentPath
será um objeto Localizador folder
que não tenha uma propriedade POSIX path
. Normalmente, a maneira mais fácil de contornar esse problema é fazer com que o Finder converta seu objeto item
( folder
é uma subclasse de item
) em um objeto alias
e extraia seu POSIX path
( Os objetos alias
têm uma propriedade POSIX path
).
Se você colocar tudo isso junto, você pode acabar com algo parecido com isto:
on open someDroppedAliases
set theAlias to first item of someDroppedAliases
tell application "Finder"
set parentFolder to container of theAlias
set parentFolderAlias to parentFolder as alias
end tell
set parentFolderPath to POSIX path of parentFolderAlias
display dialog "Path of container:" default answer parentFolderPath
end open
Sem todas as variáveis intermediárias:
on open someDroppedAliases
tell application "Finder" to ¬
set parentFolderPath to POSIX path of ¬
(container of first item of someDroppedAliases as alias)
display dialog "Path of container:" default answer parentFolderPath
end open
Ou, com Eventos do sistema (cujos objetos item
têm, na verdade, uma propriedade POSIX path
):
on open someDroppedAliases
tell application "System Events" to ¬
set parentFolderPath to POSIX path of ¬
container of first item of someDroppedAliases
display dialog "Path of container:" default answer parentFolderPath
end open
Nota: Nada nas minhas versões (ou na sua formulação original) é específico para o processamento de pastas. O mesmo programa processará um arquivo descartado e gerará seu contêiner.
1
Tecnicamente, são «class bmrk»
objetos no Snow Leopard, que parecem funcionar principalmente como objetos alias
(embora possa haver algumas diferenças dos objetos true alias
.