Applescript - Как получить каждую строку буфера обмена, разделенную новой строкой, и выполнить действие с каждой строкой?

Я пытаюсь изменить applescript, который берет текстовый файл и создает новую задачу с каждой строкой текстового файла:

set myFile to (choose file with prompt "Select a file to read:")
open for access myFile

set fileContents to read myFile using delimiter {linefeed}
close access myFile

tell application "Things"

    repeat with currentLine in reverse of fileContents

        set newToDo to make new to do ¬
            with properties {name:currentLine} ¬
            at beginning of list "Next"
        -- perform some other operations using newToDo

    end repeat

end tell

Вместо этого я хотел бы иметь возможность просто использовать буфер обмена в качестве источника данных, поэтому мне не нужно каждый раз создавать и сохранять текстовый файл, есть ли способ загрузить буфер обмена и для каждой новой строки выполнить новая функция ToDo?

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

try
    set oldDelims to AppleScript's text item delimiters -- save their current state
    set AppleScript's text item delimiters to {linefeed} -- declare new delimiters

    set listContents to get the clipboard
    set delimitedList to every text item of listContents

    tell application "Things"
        repeat with currentTodo in delimitedList
            set newToDo to make new to do ¬
                with properties {name:currentTodo} ¬
                at beginning of list "Next"
            -- perform some other operations using newToDo
        end repeat
    end tell

    set AppleScript's text item delimiters to oldDelims -- restore them
on error
    set AppleScript's text item delimiters to oldDelims -- restore them in case something went wrong
end try 

РЕДАКТИРОВАТЬ: с помощью приведенного ниже ответа код невероятно прост!

set listContents to get the clipboard
set delimitedList to paragraphs of listContents

tell application "Things"
    repeat with currentTodo in delimitedList
        set newToDo to make new to do ¬
            with properties {name:currentTodo} ¬
            at beginning of list "Next"
        -- perform some other operations using newToDo
    end repeat
end tell

person waffl    schedule 15.12.2011    source источник


Ответы (1)


Applescript имеет команду под названием «абзацы», которая очень хорошо определяет, что такое разделитель строк. Таким образом, попробуйте это. Обратите внимание, что при таком подходе вам не понадобятся «разделители текстовых элементов».

set listContents to get the clipboard
set delimitedList to paragraphs of listContents

Обратите внимание, что если вы хотите использовать свой код, это правильный способ получить символ перевода строки...

set LF to character id 10
person regulus6633    schedule 15.12.2011