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

set the clipboard to data_memory_full           
tell application "Safari"     
    activate                 
    set URL of document 1 to --Google docs URL             
    tell application "System Events" to keystroke "v" using {command down}      
end tell

однако, когда я делаю это, память всегда вставляется в мой файл appleScript, а не в safari. Как мне это остановить ?! заранее спасибо

1 ответ1

0

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

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

Но даже использование TextEdit на самом деле не нужно, поскольку вы можете просто записать данные в файл непосредственно из AppleScript:


Я собираюсь предположить, что переменная data_memory_full содержит простые текстовые данные, и что вы, вероятно, захотите, чтобы результирующий текстовый файл использовал кодировку текста UTF-8.

Учитывая это, вы можете записать содержимое переменной data_memory_full в новый или существующий файл следующим образом:

set data_memory_full to "Some sample text to store in memory."


script memoryfile
    property sys : application "System Events"
    property path : "~/Google Drive/AppleScript/bot/MEMORY.data"
    property file : a reference to sys's file (my path)

    to make
        if not (my file exists) then ¬
            sys's (make new file ¬
            with properties {name:my path})
    end make

    to write textdata without overwriting
        local textdata, overwriting

        set textdata to textdata & linefeed

        if overwriting then set eof of ¬
            (my file as alias) to 0

        tell the current application ¬
            to write the textdata ¬
            to (my file as alias) ¬
            starting at eof ¬
            as «class utf8»
    end write

    to read
        tell the current application ¬
            to read (my file as alias) ¬
            as «class utf8»
    end read
end script


make memoryfile -- Create the data file if it doesn't already exist

-- This command commits data_memory_full to storage
tell the memoryfile to write data_memory_full without overwriting

read memoryfile -- This allows you to retrieve the file's contents

Измените эту строку:

property path : "~/Google Drive/AppleScript/bot/MEMORY.data"

содержать путь к файлу, где вы хотите, чтобы файл памяти был создан. Файл не должен уже существовать, так как сценарий создаст его при необходимости. Однако папки, содержащие путь к файлу, должны существовать. В своих тестах я создал файл, который хранился локально в моем каталоге "Google Drive", который затем синхронизируется с Google Drive в облаке (для этого необходимо установить программное обеспечение Google Backup & Sync ).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .