[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[kagemai-users:0344] Re: CSV出力のためのスクリプト



はじめまして、てくと申します。

すぐに返事を頂いたのに返信が遅くなってすみません。

各レポートの最新の情報を下記のスクリプトを
実行しただけでうまくcsv出力することができました。

とても便利なので今後も使わせていただきます。

初心者の質問にも丁寧に答えていただき
ありがとうございました。

FUKUOKA Tomoyuki wrote:
> 福岡です。
> 
> teku san wrote:
>  
> | 現在、保存形式をXMLにして使っています。
> | 
> | 要望等であるように最新の投稿内容をCSV出力したいと考えています。
> | 
> | スクリプトで簡単にできるとのことですが、
> | サンプルでもいいの教えていただけないでしょうか?
> 
> 投稿されている全メッセージを出力する例が、[kagemai-users:0049] や
> [kagemai-users:0055] にあります。たぶん今でも動きます。
> 
> 全メッセージではなく、各レポートの最新の情報だけがみたいのであれば、
> Report から Message を取り出すのではなく、Report#[] などを使うと
> いいんじゃないかと。[kagemai-users:55] をベースにするなら、以下の
> ような感じでいけると思います。
> # 実際に動かしてはいません
> 
> 
> #!/usr/bin/ruby -Ke
> 
> ## usage: ruby export.rb project-id
> 
> kagemai_root = "/home/fukuoka/kagemai"        # setup
> config_file  = "#{kagemai_root}/kagemai.conf" # setup
> 
> $: << "#{kagemai_root}/lib"
> require 'kagemai/config'
> 
> Kagemai::Config.initialize(kagemai_root, config_file)
> 
> require 'kagemai/bts'
> require 'kagemai/project'
> require 'kagemai/message_bundle'
> 
> module Kagemai
> 
>   def self.export(project_id)
>     MessageBundle.open(Config[:resource_dir], 
>                        Config[:language], 
>                        Config[:message_bundle_name])
>     
>     bts = BTS.new(Config[:project_dir])
>     project = bts.open_project(project_id)
>     
>     project.each do |report|
>       line = [report.id]
>       report.each_attr do |etype|
>         value = report[etype.id].to_s
>         line << "\"" + value.gsub(/"/, '""') + "\""
>       end
>       puts line.join(',')
>     end
>   end
> 
> end
> 
> if $0 == __FILE__ then
>   unless ARGV.size == 1 then
>     puts "usage: ruby export.rb project-id"
>     exit 1
>   end
> 
>   project_id = ARGV.shift
>   Kagemai::export(project_id)
> end
>