Как изменить порядок сортировки вывода этого AppleScript на другой?

Вопрос или проблема

У меня есть следующий 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

Объяснение

  1. Объявление output: Мы создаем строку output, которая будет использоваться для хранения результатов.

  2. Цикл repeat: Этот цикл перебирает все окна Finder. Для каждого окна мы извлекаем имя, размер и позицию.

  3. Форматирование строки: Для каждого окна мы форматируем строку в желаемом виде. Мы используем windowName, windowSize и windowPosition для создания нужного формата.

  4. Удаление лишнего символа новой строки: В конце скрипта мы удаляем последний символ новой строки для более аккуратного результата.

  5. Возврат результата: Мы возвращаем отформатированную строку в желаемом формате.

Заключение

Этот скрипт выполнит требуемую задачу форматирования вывода в AppleScript согласно вашим пожеланиям. Вы можете просто скопировать и вставить этот код в ваш редактор AppleScript и выполнить его, чтобы увидеть желаемый результат. Это наиболее подходящий способ изменить порядок вывода данных, как вы и запросили.

Оцените материал
Добавить комментарий

Капча загружается...