CSVデータを読み込んでリスト化
CSV(camma-separated values)ファイルを読み込んで、parseしてリスト型変数(2次元配列)にして返すAppleScriptです。
“aaa”, “bbb”, “1000″
“ccc”, “ddd”, “999″
という内容が書かれたCSVファイル(テキストファイル)が存在していた場合に、これを本Scriptで読み込むと……
{{”aaa”, “bbb”, “1000″}, {”ccc”, “ddd”, “999″}}
と解釈されます。
CSV書き出しのルーチンはよく使うのですが、CSVの読み込みは作ったことがなかったことが判明。あわててその場で作りました。
何らかのアプリケーションの書類をオープンして、CSV書き出しを行い……CSV書き出しした内容を読み込んで、正しくすべてのデータが書き出されたかを検証してエラー報告を行う、というAppleScriptを書いたときの副産物です。
結局、CSV読み込みを行うのではなく「CSV書き出しするデータをそのままいただく」だけで処理できたので、実験段階では必要なプログラムであったものの、本番運用時には不要に……。
スクリプト名:CSVデータを読み込んでリスト化 |
set aFile to choose file
set csvList to readAndParseCSV(aFile) of me
on readAndParseCSV(aFile) script spdCSV property aaList : {} property bbList : {} property ccList : {} end script set aaList of spdCSV to {} set bbList of spdCSV to {} set ccList of spdCSV to {} set aaList of spdCSV to read aFile set bbList of spdCSV to paragraphs of aaList of spdCSV repeat with i in bbList of spdCSV set aTmp to “{” & i & “}” try set aTmpList to run script aTmp if aTmpList is not equal to {} then set the end of ccList of spdCSV to aTmpList end if on error – end try end repeat return contents of (ccList of spdCSV) end readAndParseCSV |