[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[kagemai-users:0341] Re: CSV出力のためのスクリプト
福岡です。
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
--
福岡ともゆき <fukuoka@xxxxxxxxxxxxx>
http://www.daifukuya.com/