Applescript-как получить каждую строку буфера обмена, разделенную новой строкой, и выполнить действие с каждой строкой?
Я пытаюсь изменить applescript, который принимает текстовый файл и создает новый todo с каждой строкой текстового файла:
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
Я хотел бы вместо этого, чтобы иметь возможность просто использовать буфер обмена в качестве источника данных вместо этого, так что мне не нужно создавать и сохранять текстовый файл каждый раз, есть ли способ загрузить буфер обмена, и для каждой новой строки, выполнять функцию newToDo?
Это моя попытка до сих пор, но это, кажется, не работает и помещает весь буфер обмена в одну строку, я не могу найти правильный разделитель.
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
1 ответ:
У Applescript есть команда под названием "paragraphs", которая очень хорошо разбирается в том, что такое разделитель строк. Как таковой дайте этому попытку. Обратите внимание, что при таком подходе вам не понадобятся "разделители текстовых элементов".
set listContents to get the clipboard set delimitedList to paragraphs of listContents
Обратите внимание, что если вы хотите использовать свой код, это правильный способ получить символ перевода строки...
set LF to character id 10