1

AppleScript で html ファイルを変数に読み込もうとしています。次のコードがあります。

tell application "Finder"
    set theItems to every file of folder folderName
    repeat with theFile in theItems
        open for access theFile
        set fileContents to (read theFile)
    end repeat
end tell

今、私は次のようなエラーを受け取ります:

Finder got an error: Can’t make document file "index.html" of folder 
[...] of startup disk into type «class fsrf».

私は何を間違っていますか?私はこの例に従いました。HTML ファイルはテキストとして認識されませんか?

4

4 に答える 4

1

元のコードから始めて、これでうまくいくはずです:

set folderPath to choose folder
set someData to ""
tell application "Finder"
    set theItems to every file of folder folderPath as list
    repeat with theFile in theItems
        set theFilePath to theFile as text
        if characters -5 thru -1 of theFilePath as string is ".html" then
            set theFileHandle to (open for access file theFilePath)
            set fileContents to (read theFileHandle)
            -- for testing, call some function
            set someData to someData & return & processHtml(fileContents) of me
            close access theFileHandle
        end if
    end repeat
    -- do something with someData here
    return someData
end tell

on processHtml(theData)
    -- do something with theData here
    return theData
end processHtml

Lauri が書いたように、「as «class utf8»」を追加して、ファイルを UTF8 として読み取ることができます。UTF16 の「Unicode テキストとして」を使用することもできます。個人的には、バニラの AppleScript であり、シェル スクリプトを必要としないため、これが気に入っています。

于 2013-04-02T10:32:47.720 に答える
1

アクセスのためにオープンを使用することは、実際には難しい方法です。

AppleScript を使用して HTML ファイルを読みたい場合は、AppleScript を使用して HTML エディタに HTML ファイルを読み取るように指示するのが最善の方法です。これが、AppleScript が機能する基本的な方法です。そのため、「tell」が最も重要なコマンドです。そのため、わずか 3 行で HTML ファイルを変数に読み込むという目標を達成できます。

tell application "BBEdit"
    open (choose file)
    set theHTMLSource to the text of document 1
    close document 1
end tell

次のスクリプトは、上記を拡張して、選択したフォルダーから任意の数の HTML ファイルを読み取ります。これは BBEdit 9 で動作し、Mac App Store で入手できる「TextWrangler」と呼ばれる BBEdit の無料バージョンでも動作するはずです。または、HyperEdit や TextEdit、または好みの AppleScript 対応の HTML/テキスト エディタで使用するために、このスクリプトをかなり簡単に適応させることができます。

tell application "Finder"
    set theFolder to (choose folder)
    set theFiles to every file of folder theFolder
    set theHTMLSourceList to {}
    repeat with theFile in theFiles
        if the kind of theFile is equal to "HTML document" then
            set theName to the name of theFile
            tell application "BBEdit"
                open file (theFile as text)
                set theSource to the text of document 1
                copy {theName, theSource} to the end of theHTMLSourceList
                close document 1
            end tell
        end if
    end repeat
end tell

上記のスクリプトが完了すると、変数「theHTMLSourceList」には、HTML ドキュメントのフォルダー全体の名前とソース コードが次のように取り込まれます。

{{name of file 1, source of file 1}, {name of file 2, source of file 2}, {name of file 3, source of file 3}}

…など、任意の数のファイルまで。もちろん、スクリプトから HTML ソースを任意の方法で返すこともできます。重要な点は、AppleScript 対応の HTML エディターは HTML の読み取りと AppleScript 変数の設定の両方ができるため、小さな AppleScript で独自の HTML リーダーを作成 (およびデバッグおよび保守) する必要がないことです。

于 2014-08-11T09:55:49.813 に答える