Pythonで操作する対象として、Google Spread Sheetが使えたら、いちいちDB操作とかしなくて便利かなーと。調べてみました。スプレッドシートって、簡易データベースとして優秀ですよね。
Google Spread Sheetを読み書きするまでの手順
さて、お品書きはまとめて書くと大きく4点です。他の方は知りませんが、自分はググった内容を手順通りにやってもトラブルに見舞われる属性持ちですので、エラー対処も含めての4本立ててです。
手順1:参考にしたサイト
ググると、いろんなサイトが出てきますが情報が古いことが多いです。2018年11月現在、以下のサイトが役に立ちます。役に立つというか、「もう迷わない」の謳い文句通り手順通りにやれば全く迷いません!
ということで、改めて書き起こす必要ないので上記サイトを参考にw 手順1はここのサイト見れば完璧なので、割愛。
手順2、3:Python側の操作
プログラムは以下のサイトがわかりやすかったです。手順2、3はここ見れば分かるんで、割愛w じゃぁ何書くんだって?w
手順4:されどエラー
そう、エラーの対処です!「もう迷わない」ってサイト見ても迷う自分が素敵。
<エラー内容>
params={‘valueRenderOption’: value_render_option}
url = SPREADSHEET_VALUES_URL % (self.id, quote(range, safe=”))
return ”.join(map(quoter, s))
KeyError: u’\u30b7′
なんぞ、KeyErrorなるものが出ています。なんじゃこれ。言われた通りにやっただけなのに。環境がpython 2.7系なだけにunicode系のエラーを疑います。というか、”\u30b7″とか出てるしきっとそう。ちなみに”\u30b7″は”シ”とのこと。”シート1”のシか?
<エラーの対処>
答えはここに書いてありました。やはりunicode系のエラーでした。まさかのライブラリを直接変えろと書いてあります。勇気を振り絞って変更します。
gspreadライブラリ内の「models.py」ファイルを直接いじります。各関数で使われる、
を
に変えます。例えば、update関数であれば、114行目のrangeの後ろにencode(‘UFT-8’)を加える感じです。ちょっと怖いので、バックアップはお忘れなく。使う関数毎に同じ処理を加えていってください。
さて、直接いじって実行…できた!python2.7のバカバカ!!そろそろ3系にすべきなんでしょうか…でも環境構築がめんどくさい。
まとめ
ということで、いつもどおりのunicode系のエラーでした。正直理解できていませんがなんとかなり続けているので、しばらくはpython2.7系生活が続きそうです。根がズボラなので…
コメント