Вопрос или проблема
У меня есть следующий AppleScript:
tell application "System Events"
-- set _P to a reference to (processes whose background only = false)
set _P to a reference to (application process "Finder")
set _W to a reference to windows of _P
[_W's name, _W's size, _W's position]
end tell
Это вернет список имен окон Finder, за которым следует список размеров окон, затем список позиций окон.
Как я могу преобразовать это так, чтобы это было отформатировано как следующее?
{{имя 1-го окна}, {размер}, {позиция}},
{{имя 2-го окна}, {размер}, {позиция}},
и так далее…
Ответ или решение
Чтобы изменить порядок вывода результатов AppleScript и получить их в формате, который вы описали, вам нужно будет немного модифицировать текущий код. Давайте разберем ваш вопрос и создадим соответствующий скрипт.
Задача
У вас есть следующий скрипт:
tell application "System Events"
set _P to a reference to (application process "Finder")
set _W to a reference to windows of _P
[_W's name, _W's size, _W's position]
end tell
Этот скрипт возвращает список имен окон, размеры и позиции окон Finder. Однако вы хотите изменить формат вывода на следующий:
{{1-е имя окна}, {размер}, {позиция}},
{{2-е имя окна}, {размер}, {позиция}},
и так далее…
Изменение Скрипта
Для достижения этого результата нам нужно перебрать каждое окно, собрать необходимые данные и вывести их в желаемом формате. Вот обновлённый скрипт:
tell application "System Events"
set _P to application process "Finder"
set _W to windows of _P
set output to ""
repeat with aWindow in _W
set windowName to name of aWindow
set windowSize to size of aWindow
set windowPosition to position of aWindow
-- Форматируем строку
set output to output & "{{" & windowName & "}, {" & windowSize's item 1 & ", " & windowSize's item 2 & "}, {" & windowPosition's item 1 & ", " & windowPosition's item 2 & "}}," & linefeed
end repeat
-- Удаляем последний символ новой строки, если необходимо
set output to text 1 thru -2 of output
return output
end tell
Объяснение
-
Объявление
output
: Мы создаем строкуoutput
, которая будет использоваться для хранения результатов. -
Цикл
repeat
: Этот цикл перебирает все окнаFinder
. Для каждого окна мы извлекаем имя, размер и позицию. -
Форматирование строки: Для каждого окна мы форматируем строку в желаемом виде. Мы используем
windowName
,windowSize
иwindowPosition
для создания нужного формата. -
Удаление лишнего символа новой строки: В конце скрипта мы удаляем последний символ новой строки для более аккуратного результата.
-
Возврат результата: Мы возвращаем отформатированную строку в желаемом формате.
Заключение
Этот скрипт выполнит требуемую задачу форматирования вывода в AppleScript согласно вашим пожеланиям. Вы можете просто скопировать и вставить этот код в ваш редактор AppleScript и выполнить его, чтобы увидеть желаемый результат. Это наиболее подходящий способ изменить порядок вывода данных, как вы и запросили.