-- Export CSV -- https://c-command.com/scripts/eaglefiler/export-csv -- Summary: Saves the metadata for the selected records in a Comma Separated Values file. -- Requires: EagleFiler -- Install Location: ~/Library/Scripts/Applications/EagleFiler/ -- Last Modified: 2019-05-24 on run set _fileName to choose file name with prompt "Export CSV" default name "Metadata.csv" tell application "EagleFiler" set _records to selected records of browser window 1 set _file to open for access _fileName with write permission set _headerFields to {"Filename", "Path", "Title", "From", "Kind", "Label Index", "Tags", "Source URL", "Notes"} set _headerLine to my lineFromFields(_headerFields) write _headerLine to _file repeat with _record in _records set _line to my lineFromFields(my fieldsFromRecord(_record)) write _line to _file as «class utf8» end repeat close access _file end tell end run on lineFromFields(_fields) set _quotedFields to {} repeat with _field in _fields copy my quoteCSV(_field) to end of _quotedFields end repeat set lf to ASCII character 10 return my join(_quotedFields, ",") & lf end lineFromFields on fieldsFromRecord(_record) tell application "EagleFiler" set _fields to {} copy _record's filename to end of _fields set _file to _record's file set _path to _file's POSIX path copy _path to end of _fields copy _record's title to end of _fields copy _record's from name to end of _fields copy _record's kind to end of _fields copy _record's label index as string to end of _fields set _tagNames to {} set _tags to _record's assigned tags repeat with _tag in _tags copy _tag's name to end of _tagNames end repeat copy my join(_tagNames, ", ") to end of _fields copy _record's source URL to end of _fields copy _record's note text to end of _fields return _fields end tell end fieldsFromRecord on quoteCSV(_string) set dq to "\"" return dq & my replace(_string, dq, dq & dq) & dq end quoteCSV on replace(_string, _source, _replacement) set AppleScript's text item delimiters to _source set _items to every text item of _string set AppleScript's text item delimiters to _replacement return _items as Unicode text end replace on join(_list, _sep) set _temp to AppleScript's text item delimiters set AppleScript's text item delimiters to _sep set _result to _list as Unicode text set AppleScript's text item delimiters to _temp return _result end join