

# 内容

次のような配列データがあります。

[code]

    parent = [['a', 'b'], ['c', 'd']]
    
[/code]

これを次のコードでgoogle_driveのgemを使用してスプレッドシートに保存したいのですが、保存できません…

[code]

    @worksheet = google_drive_session.spreadsheet_by_key(GOOGLE_DOCS_WS_KEY).worksheet_by_title(WORKSHEET_TITLE)
    parent.each do |child|
        @worksheet.update_cells(@worksheet.num_rows + 1, 1, [child])
    end
    
[/code]

次のようなエラーが出ます。

[code]

    GoogleDrive::Error: Update has failed: An invalid XML character (Unicode: 0x14) was found in the value of attribute "inputValue" and element is "gs:cell".
    
[/code]

[この記事](http://d.hatena.ne.jp/Kishi/20080424/1209007357)を見る限り、

> 絵文字を使っていたり、文字化けしたりといったことによって制御文字が挿入されたためのようです

とのことなのですが、これをrubyで回避し、エラーなくデータを保存する方法がわかりません。

ご教授のほどよろしくお願いします。

# 環境

ruby: 2.1.0


CC BY-SA 3.0
2016-03-03T12:12:20.557
22767
2016-05-03T16:12:06.643
12459
question
ruby rubygems
rubyとGoogleスプレッドシートのgemでデータを保存しようとするとAn invalid XML character (Unicode: 0x14) was foundとなって保存できません


ruby における文字列変換のご質問と思われます。  
提示されたエラーに限って言えば、`Unicode: 0x14` ですから、印字可能文字以外を削除する方法でいかがでしょうか？

[code]

    [46] pry(main)> "\x14ab".gsub(/[\x00-\x1f]/, "")
    => "ab"
    
[/code]

印字可能文字で弾けないかと `[:graph:]` を試したのですが、上手く行かなかったので、直接指定しました。


CC BY-SA 3.0
2016-03-04T13:42:37.283
22806
2016-03-04T13:42:37.283
7471
22767
answer