Как получить закладки Safari для объектов в macOS Mojave с помощью AppleScript?

Начиная с macOS Mojave, я больше не могу читать файл bookmarks.plist. Я думаю, это основано на новых ролях безопасности в Мохаве.

Раньше я делал это с помощью этого фрагмента кода AppleScript:

-- 
-- read the bookmarks to an new object
--
tell application "System Events"
    repeat with i in (property list items of property list item "Children" of property list file tfile)
        tell i to try
            if value of property list item "Title" = "BookmarksBar" or "Title" = "BookmarksMenu" or "Title" = "com.apple.ReadingList" then
                repeat with thisDict in (get value of property list item "Children")
                    tell thisDict to set end of myRecord to {tURL:its URLString, tTitle:its |title| of URIDictionary}
                end repeat
                -- exit repeat
            end if
        end try
    end repeat
end tell

Это часть AppleScript, который получает все закладки Safari и записывает их в HTML-файл.

Как я могу получить доступ к закладкам Safari внутри моего AppleScript теперь в Mojave, чтобы поместить их в объект / массив, как в моем старом фрагменте выше?


person HR123    schedule 30.08.2019    source источник
comment
Прочтите раздел в моем ответе здесь под названием Ограничения MacOS Mojave - объясняет, что необходимо для предоставления Terminal.app доступа к ~/Library/Safari/Bookmarks.plist. Предположительно вам нужно будет сделать что-то подобное для AppleScript.   -  person RobC    schedule 30.08.2019
comment
Спасибо за ваш быстрый ответ. Я пробовал добавить редактор сценариев и / или сам сценарий в разрешенную политику доступа к файлам. Но все равно не работает. Я думаю, это потому, что системные события пытаются получить доступ к bookmarks.plist. У вас есть альтернатива или идея, как я могу сказать Safari, чтобы он возвращал каждую закладку? Возможно, я мог бы избавиться от файла plist, сказав сафари сделать то же самое.   -  person HR123    schedule 30.08.2019
comment
Возможно, попробуйте предоставить System Events.app доступ ко всему вашему диску, то есть добавить его в разрешенную политику доступа к файлам. Я думаю, что System Events.app находится в /System/Library/CoreServices/, если я правильно помню.   -  person RobC    schedule 30.08.2019