テキストファイルの保存

Revで作成したテキストをPCにテキストファイルとして保存するためのスクリプトです。

on SaveLog tDat
    put getPrefsFolderPath() & "Valentina/log.txt" into theFileName
    open file theFileName --for text read
    read from file theFileName until EOF -- ファイルの終わりまで読む
    close file theFileName

    if it is empty then
        create folder getPrefsFolderPath() & "Valentina/"
        else
        put it into NewDat
    end if

    put tDat & cr before NewDat
    put NewDat into URL ("file:" & theFileName)
end SaveLog

Function getPrefsFolderPath
    if the platform = "MacOS" then
        put specialFolderPath("Preferences") into prefsFolder
        else if the platform = "Win32" then
        put specialFolderPath(26) into prefsFolder
    end if
    if last char of prefsFolder is not "/" then put \
    "/" after prefsFolder
    return prefsFolder
end getPrefsFolderPath

これをスタックかカードに書いておき、ボタンのスクリプトに、SaveLog "ABCD" と書いておくと、log.txtというファイルに"ABCD"とかかれます。log.txtがPCに存在する場合は、既存のテキストの前に"ABCD"が挿入され、log.txtが存在しない場合、新規にlog.txtを作成しその中に"ABCD"と書かれます。

ここではファイルの保存先を「通常の設定フォルダ」に作成したValentinaフォルダにしています。(通常のアプリケーションが設定ファイルを書くフォルダ)
そのため、getPrefsFolderPathでスクリプトが走っているマシンがWindowsかMacかを識別し、それぞれに対応した「通常の設定フォルダ」のパスを出力しています。

SaveLogは、getPrefsFolderPathで求めたパスに、log.txtというファイル名でファイルを書くためのものです。tDatには、そのファイルに書かれるべきテキストが入っています。
SaveLogの中で、既にlog.txtがPCに存在するかどうかで最初のif文が分岐します。すなわち、log.txtがPCに存在しない場合、Valentina/というフォルダを作成し、log.txtが存在する場合、log.txtの内容をNewDatにcopyします。
最後の行でファイルをPCに書き込みます。