Результат Applescript (ссылки в виде текста) на URL - PullRequest
0 голосов
/ 29 апреля 2018

Кажется, не все так просто, как я думал.

Мой скрипт извлекает ссылки с веб-сайтов

На данный момент результирующие URL-адреса являются просто текстовыми, и мне нужно, чтобы они были представлены в виде URL-адресов (буфер обмена или переменная), чтобы вставить их в сообщение электронной почты

Я пробовал разные вещи: сначала сохранить в rtf-файл и прочитать / вставить его в тело сообщения электронной почты или скопировать и вставить в буфер обмена.

Любая помощь будет потрясающей, так как я не могу решить эту проблему за 2 дня. Спасибо

--prompt for keyword
display dialog "Keyword or Sentence" default answer "mad dog" buttons {"Done"} default button 1
set Keyword to text returned of the result

--create URL filter from Keyword
set my text item delimiters to " "
delay 0.2
set split_list to every text item of Keyword -- split in to list of everything between the spaces
set my text item delimiters to "-"
set Filter to (split_list as text) -- join, using the - as the delimter

--Open Pages
set site_url to "https://teespring.com/search?q=" & Keyword
tell application "Safari"
    activate
    open location site_url
end tell

-- wait until page loaded
property testingString : "Help" --Text on website to look for

set pageLoaded to false
tell application "Safari"
    repeat while pageLoaded is false
        set readyState to (do JavaScript "document.readyState" in document 1)
        set pageText to text of document 1

        if (readyState is "complete") and (pageText contains testingString) then set pageLoaded to true
        delay 0.2
    end repeat
end tell

-- get number of links
set theLinks to {}
tell application "Safari" to set num_links to (do JavaScript "document.links.length" in document 1)
set linkCounter to num_links - 1
-- retrieve the links
repeat with i from 0 to linkCounter
    tell application "Safari" to set end of theLinks to do JavaScript "document.links[" & i & "].href" in document 1
end repeat
theLinks
set nonExcludedURLs to {}

--Filter URLs
repeat with i from 1 to length of theLinks
    if item i of theLinks contains Filter then

        set end of nonExcludedURLs to item i of theLinks
    end if
end repeat
nonExcludedURLs


on page_loaded(timeout_value)
    delay 2
    repeat with i from 1 to the timeout_value
        tell application "Safari"
            if (do JavaScript "document.readyState" in document 1) is "complete" then
                set nonExcludedURLs to {}

                return true
            else if i is the timeout_value then
                return false
            else
                delay 1
            end if

        end tell
    end repeat
    return false
end page_loaded

1 Ответ

0 голосов
/ 02 мая 2018

Нашел решение. Может быть, я описал проблему не очень хорошо.

Мне просто нужно было разделить полученные URL-адреса из блока текста на отдельные строки с помощью следующего кода:

set Single_URLs to "" 
repeat with this_line in nonExcludedURLs -- the URL's as block of text
    set Single_URLs to Single_URLs & this_line & return --split into lines
end repeat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...