SeleniumとGoogle Spreadsheets(7) 「苦労した編」

SeleniumとGoogle Spreadsheets(7) 「苦労した編」

どうも、さむらいです。
先日いちごつけ麺なる奇抜な食べ物を食しに、東京都新宿区まで足を伸ばしたら、午後1時にも関わらず、すでに売り切れていました。1日10食の、そのおかしな食べ物を誰が食べたというのか!

ということで、前回まででひと通りのソースの説明は終わりましたので、今回はGoogle SpreadsheetsをSeleniumから利用するにあたって、苦労した話を書きたいと思います。

リファレンスが少ない!

まずはなんといってもこれ。SeleniumからGoogle Spreadsheetsにアクセスして云々なんてそもそもそんなニッチなことをやっている人が見つからなかったので、どうやってGoogleのAPIを叩けばいいのかを調べるのに時間がかかりました。

GData APIを使ってアクセスすればよろしい、というところまで調べがついてもGData APIのどのメソッド叩けばいいのさ!と狼狽しつつStack Overflowで英語を読みふけっていました。同じことで悩む人は世界のどこにでもいるもので、僕は一人じゃないと感じました(大げさ)
もう少し英語を勉強しなくてはいけませんねぇ。

セルの範囲が「行と列」という単位で取れない!

これは単に調査不足なだけだと思いますが「行:列」の2次元配列のような範囲で指定するとエラーでデータが取れませんでした。エラーの内容は忘れましたけど知ってる人がいたら教えてください。

OKケース

     

 

 
 
 

 
ダメケース

     
     
     

※諦めるまでに2日くらい悩んでました。

「列」の挿入ってどうやるの!

GData APIからは列を指定して、その前か後ろに列を追加、挿入というメソッドが見つかりませんでした。普通にAPIありそうなんですけど、探せませんでした。ぐぬぬ。

自動検証結果を新しい列に、どうしても挿入したい!と熱望していたので(自分が)、無理やりトリッキーな方法で実現しましたよ。

  1. Google Spreadsheetsのマクロに、列を追加する関数を追加する。
  2. 小さい画像をシートのどこかに隠して、クリックしたら列追加のマクロを実行するようヒモ付ける。
  3. SeleniumからシートをChromeで開き(ログイン処理も実施)、2で追加した画像をクリックしてChromeを閉じる。
  4. GData APIから追加されたであろう列に、データを書き込む。

簡単に書きましたが、Google Spreadsheets上に画像が現れるのは結構遅いので、エレメントが表示されるまで待つ関数を実行する、などしてタイミングを測りつつ調整しました。もうほんとにスマートじゃなくて泣けてきます。誰か美しいやり方を教えてください。

※これも諦めるまでに2日くらいかかりました。

ぱっと思いつくのはこのくらいですね。

勝手にデータが入っていく様を見るのは楽しかったですが、それでもこの記事を書けるようになるまでに、1ヶ月くらい(!)調査やらテストやらかかったので、勉強にはなったけどもうやりたくないですねぇ・・・。みんなあとは頼んだぜ・・。

ということで、一旦この記事は終了です。
次はもう少しJavaScriptにフォーカスした記事を書きたいと思います。お疲れ様でした。
ではまた!

コメント