无法在Applescript中处理剪贴板中的文本

时间:2013-03-04 04:34:36

标签: macos macros applescript

我被迫使用一个软件,需要将大量数据输入到简单的Web表单中,因此我设计了一个AppleScript来将文本文件作为输入,然后将内容击键到Safari中,以便选中文本文件用于前进到Web表单中的下一个字段。我正在做一些字符串替换,所以我可以将文本文件中的换行符视为制表符,以便于文本文件的可读性。

我想通过剪贴板中的键盘来简化这一点,这可行,但字符串替换不会按照应有的方式发生,我无法确定原因。此时我的解决方法是在复制之前用标签手动查找/替换换行符,但这基本上和保存文件并将脚本指向它一样慢。

tell application "Safari"
    activate
end tell

set sourceString to (the clipboard) as text

set ASTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to "\n"
set the lineList to every text item of sourceString
set AppleScript's text item delimiters to "\t"
set keystrokeString to the lineList as string
set AppleScript's text item delimiters to ASTID

tell application "System Events"
    keystroke keystrokeString as text
end tell
如果将其放入AppleScript编辑器,

\t\n将编译为不可见。当我使用以下文件从文件中读取时,字符串编辑(中间)部分的工作方式就像宣传的那样:

set theFile to (choose file with prompt "Select a file to read:" of type {"txt"})
open for access theFile
set fileContents to (read theFile)
close access theFile

当我从剪贴板中获取文本时,为什么字符串替换可能无法正常工作?

3 个答案:

答案 0 :(得分:1)

设置分隔符时使用ASCII字符功能应该有效。换行符是ASCII字符10.所以即:set AppleScript's text item delimiters to ASCII character 10 应该工作。

答案 1 :(得分:0)

在页面上浏览表单通常容易出错。您应该按ID识别每个表单,并使用javascript填充表单。

tell application "Safari"
    set URL of document 1 to "http://www.google.com/"
    delay 3
    do JavaScript "document.getElementById('gbqfq').value = 'My Text'" in document 1
end tell

答案 2 :(得分:0)

在将文本复制到剪贴板时,似乎换行符被转换为回车符,\n将与它们不匹配。

然而,

\r,他们都会编译成隐形字符,这有点令人烦恼。

经过一些测试,看起来当您将文本文件保存到磁盘然后使用AppleScript读取时,您必须将文件中使用的行结尾,LF或CR与\n或{匹配{1}}。 但是,在阅读复制到剪贴板的文字时,您必须始终匹配\r

编辑:

其中许多角色都有AppleScript关键字。 \rtablinefeed都可以按原样使用。我的脚本现在看起来像这样:

return

它现在还包括在每个标签后点击的退格字符,因此如果文本未输入到已经填充的字段中,则在进入高级后将其删除。