Как вставить в сафари с appleScript без вставки в фактический файл applecript

240
Rook_Blank

Недавно я обнаружил яблочный скрипт, и мне не терпелось сделать из него интернет-бота. Я построил своего бота с памятью, чтобы он не осуществлял поиск на одном и том же веб-сайте дважды. Я хочу сохранить свою память на 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  end tell 

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

0

1 ответ на вопрос

0
CJK

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

Ваша идея использовать 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 ) 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 ).

Похожие вопросы