Я - новичок в applescript. Я пытался узнать об этом из различных источников, таких как сайт Doug, macscripter и этот форум
Только для изучения целей, я пытался распечатать на экране все имена дорожек с помощью этого кода:
tell application "iTunes"
set myTracks to (tracks of library playlist 1)
repeat with aTrack in myTracks
get name of aTrack
end repeat
end tell
Но это только печатает одно имя дорожки, вероятно, последнее...
Так, как лучший способ состоит в том, чтобы выполнить итерации по списку?
TIA,
Bob
Ваш код в порядке; Причина, по которой кажется, что ничего не происходит, заключается в том, что все, что делает get ...
, - это ищет значение и возвращает его. Однако вы ничего не делаете с возвращенным значением, поэтому оно игнорируется, и только последняя итерация цикла что-либо возвращает. Вам нужно сделать что-нибудь (что угодно) внутри цикла, которое будет видно внешнему миру: назначить переменной, отобразить диалог, что угодно.
Если вы хотите собрать список названий предметов, вы можете сделать следующее:
tell application "iTunes"
set trackNames to {}
repeat with aTrack in tracks of library playlist 1
set trackNames to trackNames & name of aTrack
end repeat
end tell
Однако вы можете это сделать. Одной из мощных функций AppleScript является то, что так же, как вы можете получить имя трека, вы можете получить имя каждого трека в списке и перебирать его:
tell application "iTunes"
set trackNames to {}
repeat with aName in name of tracks of library playlist 1
set trackNames to trackNames & aName
end repeat
end tell
Но на этом этапе вам даже не нужен цикл , и вы можете использовать гораздо более простой вариант
tell application "iTunes" to name of tracks of library playlist 1
. И в качестве бонуса он будет намного быстрее: в моем быстром тесте три версии заняли 16,189 секунды, 32,656 секунды и 0,296 секунды соответственно.
Думаю, ваш ответ верен. Я считаю, что результат в столбце редактора сценария Apple печатает только последний результат вашего сценария. Если вы посмотрите «Событие» и ответите на него, вы увидите, что ответы правильно возвращаются вашим сценарием.
Я попробовал себя, используя этот скрипт:
tell application "iTunes"
set myTracks to (tracks of library playlist 1)
repeat with i from 1 to number of items in myTracks
get name of item i of myTracks
end repeat
Я вижу, что в ответах:
получить имя файла с идентификатором дорожки 4050 из библиотечного плейлиста с идентификатором 3379 идентификатора источника 41
-> "Le deserteur"
получить имя файла с идентификатором 4051 дорожки с идентификатором 3379 плейлиста библиотеки с идентификатором источника 41
-> "Le lyon est mort ce soir"
ТАКЖЕ, просто чтобы убедиться, что это работает, вы можете попробовать следующее:
tell application "iTunes"
set myTracks to (tracks of library playlist 1)
repeat with i from 1 to number of items in myTracks
display dialog name of item i of myTracks as string
end repeat
end tell
Итак, это работает, вам нужно только сделать то, что вы хотите сделать, прежде чем конец вашего цикла.
Также я бы порекомендовал официальную документацию Apple: Руководство по языку AppleScript. Бесплатно и очень полно для начала.
Надеюсь, это поможет!