[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
>