我正在尝试从具有450多个rtf文件的文件夹中提取超链接和常规文本。每个文件具有相同的结构。
我正在使用以下Applescript,该AppleScript可以正常运行,并且可以在结果窗口中正确解码文件。
但是我收到此错误,但我不够熟练,无法纠正它。
错误“-[NSURL writeToURL:atomically:encoding:error:]:无法识别 选择器发送到实例0x7fa6f527c7f0“号-10000
这是我在互联网上找到的脚本:
use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use framework "AppKit"
use scripting additions
set theFolder to choose folder -- choose the folder containing the .rtf files
tell application id "com.apple.finder" -- Finder
set theFiles to every file of theFolder as alias list
end tell
repeat with aFile in theFiles
if (aFile as text) ends with ".rtf" then
set theURL to (current application's NSURL's fileURLWithPath:(POSIX path of aFile))
set {attString, theError} to (current application's NSAttributedString's alloc()'s initWithURL:theURL options:(missing value) documentAttributes:(missing value) |error|:(reference))
-- get elngth so we can start from the end
set start to (attString's |length|()) - 1
-- make plain string copy to work on
set theString to attString's |string|()'s mutableCopy()
repeat
-- find link
set {aURL, theRange} to (attString's attribute:(current application's NSLinkAttributeName) atIndex:start effectiveRange:(reference))
if aURL is not missing value then
-- get linked text
set linkText to (theString's substringWithRange:theRange)
if (aURL's |scheme|()'s isEqualToString:"mailto") then -- email address
set newLink to aURL's resourceSpecifier()
else if (linkText's containsString:"This Site") then -- resource specifier, remove //
set newLink to (aURL's resourceSpecifier()'s substringFromIndex:2)
else -- full URL
set newLink to aURL's absoluteString()
end if
-- replace link
(theString's replaceCharactersInRange:theRange withString:newLink)
end if
set start to (location of theRange) - 2
if start < 0 then exit repeat
end repeat
set newFile to (theURL's URLByDeletingPathExtension()'s URLByAppendingPathExtension:"text")
(newFile's writeToURL:theURL atomically:true encoding:(current application's NSUTF8StringEncoding) |error|:(missing value))
end if
end repeat
任何帮助将不胜感激。
这是文件夹中每个文件的结构几乎相同:
此网站(带有超链接)
提交日期
2018年12月12日
通知日期
2019年10月1日
活动日期
2019年10月25日
跟踪号码
SIFF4964
Email (with Hyperlink) Website (Hyperlink)
我希望得到一个纯文本文件
Site.com
提交日期
2018年12月12日
通知日期
2019年10月1日
活动日期
2019年10月25日
跟踪号码
SIFF4964
address@site.com
site.com
谢谢
答案 0 :(得分:1)
该错误明确指出writeToURL:atomically:encoding:error
不属于NSURL
。
这只是一个错字,您想将替换后的字符串写到磁盘,而不是URL
(theString's writeToURL:newFile atomically:true encoding:(current application's NSUTF8StringEncoding) |error|:(missing value))
PS:请不要忘了,Shane在MacScripter上为您做了很多工作