前提・実現したいこと
お世話になっております。
現在、ExcelファイルをJSONファイルにパースするツールを
Rubyにて開発しております。
しかし、今までは動いていたツールが本日、実行したところ、
エラーメッセージが発生し、私の勉強不足もあり、独力での解決が難しくなってきました。
皆様のお知恵をお借りしたく、質問させていただきます。
発生している問題・エラーメッセージ
Traceback (most recent call last): 2: from x2j.rb:14:in `<main>' 1: from x2j.rb:14:in `each' x2j.rb:28:in `block in <main>': undefined local variable or method ` ' for main:Object (NameError)
該当のソースコード
Rubyソースコード
1#使用するgemを宣言 2require 'spreadsheet' 3require 'json' 4 #シートの文字コードを指定 5 Spreadsheet.client_encoding = 'UTF-8' 6 #シートが開けるかチェック 7 begin 8 book = Spreadsheet.open $*[0] 9 rescue 10 STDERR.puts "usage: ruby x2j.rb excel_file" 11 exit false 12 end 13 #パース処理 14 book.worksheets.each do |sheet| 15 next if sheet.name.index('!') == 0 16 #labelの位置を2行目に指定 17 labels = sheet.row(1) 18 $rows = [] 19 sheet.rows[1..-1].each do |row| 20 hash = Hash.new() 21 row.each_with_index do |cell, i| 22 hash[labels[i]] = cell.kind_of?(String) && cell.include?(',') ? cell.split(',') : cell 23 end 24 $rows.push hash 25 end 26 #jsonファイル作成処理 27 f = File.open(sheet.name + '.json', 'w') 28 #json文字列成形・書き込み処理 29 rows.shift() 30 f.write JSON.generate(rows) 31 f.close 32end 33
試したこと
- エラーメッセージの検索
調べてみたところ、よくある変数/メソッドが見つからないというものでしたが、
その見つからないといわれている箇所がコメントアウトしている行と、変数名ではなく、
空白で示されているため正直お手上げ状態です。
- 問題発生個所の切り分け
・ファイルを読み込めない場合、エラーメッセージが出力されるが今回は発生していない
・該当エラーメッセージが出ても空のJSONファイルは生成される
上記より、ファイルからデータを抽出し、パースする処理で問題が発生していると思われる
- 差異の確認
正常に動作したときにとったバックアップファイルと現在問題が起きているファイルをWinMergeにかけたところ、パース元のExcelファイルとrbファイルともに差異は見当たらない
補足情報(FW/ツールのバージョンなど)
環境は以下の通りです。
Windows10 64bit
ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/10 05:37