我最近发现了 applescript,并一直渴望用它制作一个互联网机器人。我为我的机器人建立了一个记忆功能,这样它就不会重复搜索同一个网站。我想将我的记忆保存在 google docs 上,这样我就不必随身携带额外的文本编辑文件(另外,我无法让 applescript 使用 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
我不完全明白你想做什么,但我可以说,你几乎肯定不想通过发送模拟击键来做到这一点系统事件或使用系统事件以任何方式控制流程。这是坏的脚本,这些脚本将会在创纪录的时间内被打破。
您的想法文本編輯实际上是更好的主意,因为实际上可以编写脚本文本編輯直接编辑文档,这比您当前的方法更可靠。
但即使利用文本編輯实际上是没有必要的,因为您可以直接从 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 云端硬盘在云端(这需要您安装Google 的备份和同步软件)。