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

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

Leave a Reply