windowsでrails使ってみる
IDEはAptana3を選択。
まずは両方のインストラーを起動してセットアップ。
終わったらプロジェクト用の領域作ります。
適当なパスにワークスペース用のフォルダ作成。
ワークスペースのディレクトリに移動してrailsインストール。
$ gem install rails
上記だと最新バージョンを自動的にひっぱってきます。他のバージョンを使いたい場合は以下のように指定する。
$ gem install rails --version 3.1.0
複数ヴァージョンインストールしている場合は以下でデフォルト指定できる。
$ rails _3.1.0_ --version
rails起動すると依存gemのインストールが始まります。
$ rails server
足りないものは個別で追加。
(例)
$ gem install bundler
$ gem install rake
$ gem install mysql2
#なんかrails serverだけだと基本ライブラリがないからやっぱbundler入れて、bundle install走らせた方がよさそう。
(gem installでrails入れて、bundler入れてって、rails installer意味ない気がするんだが・・・。)
新規プロジェクトを起こす。
$ rails new demo
これで使えるようになりますた。(どうしてこうなった)→4/25追記 列車本に合わせてrailsのバージョン落としたからですね。。w
真・googleカレンダーとスプレッドシートを連携させる
すったもんだのあげくようやく表題ができるようになりました。
参考にしたものは以下。
Google Apps Script = GoogleDocs版javascript
Google Apps Scriptガイド
http://code.google.com/intl/ja/googleapps/appsscript/guide.html
Google Apps ScriptでスプレッドシートからGoogleドキュメント以外のサービスにアクセスする
http://codezine.jp/article/detail/5064
〜一通り作ってみての追記〜
スクリプト自体は簡単にできるんだけど、処理にコストがかかるとgoogleサーバにタイムアウトで蹴られてしまいます。
今回書いたスクリプトでは、スプレッドシートオブジェクト(ライブオブジェクトではないけど異様に重い)の配列切り出しと書き込み処理をチューニングすることで対処しました。
取得部分でスプレッドシートオブジェクトから必要な値だけを配列に切りだす。
var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName(sheetName); var cellValues = sheet.getRange(targetRange).getValues();
書き込みは1行1行書き出してると目視できるくらいもっさりした処理になります(スローモーションを見ているようでワロタ^^;)
二元配列を生成して一回で終わらせるとスマート。
for(var i=0 ; i<cellValues.length ; i++){ var tmpvalue = new Array(1); tmpvalue[0] = cellValues[i]; values[i] = tmpvalue; } var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName(sheetName); var all = sheet.getRange(targetrange); all.setValues(values);
googleカレンダー改めgoogleタスクとスプレッドシートを連携させる
カレンダーはなかったわけだが、タスクAPIは用意されていたので再びチャレンジ始める。
Google Tasks APIガイド
http://code.google.com/intl/ja/apis/tasks/v1/getting_started.html
残念ながらjavascriptのクライアントライブラリは用意されてない。
なんでrestをjavascriptで直接使う。
tasksAPIリファレンスガイド
http://code.google.com/intl/ja/apis/tasks/v1/reference.html
RESTを直で扱ったことないので他のサンプルを参考にする
http://blog.livedoor.jp/minoaw/archives/1452381.html
http://japan.internet.com/developer/20091225/26.html
1/17 ついに大きな勘違いに気が付く。スプレッドシートのスクリプトでXMLHttpRequestメソッドが使えない→もしかして(ブラウザベースの)javascriptじゃねくね?→見るべきガイドはgdata APIではなくgoogle APP scriptであることに気が付く!!
googleカレンダーとスプレッドシートを連携させる
スケジュール管理に使えないかと思って、googleカレンダーに入力したらgoogleスプレッドシートで集計するようなAPを思いつく。
とりあえず調査から。
まずGoogle Data ProtocolのOverView
http://code.google.com/intl/ja/apis/gdata/docs/developers-guide.html
この辺はさらっと。気になったのは以下。
・バージョンに1.0と2.0があって今は2.0を推奨しているけど、HTTPでやるならデフォルトは1.0だから2.0を指定せよ
・サービスによっては部分参照、部分更新が可能(逆に言うと一括取得、一括更新しかできないサービスもある)
・Etags使って並列処理するならもっと他のドキュメント読んでくれ
次にカレンダーAPIのdevelopers_guide。
googleドキュメントのスクリプトに記述するのでjavaScriptを選択します。
http://code.google.com/intl/ja/apis/calendar/data/1.0/developers_guide_js.html
日本語訳がありました。素晴らしい!と思ったら旧バージョンのAPIらしい。。
ただ、JavaScriptはこのバージョンしかないので使うしかない。
3.0だとJSONフォーマットらしいが残念。
(なお、1.0、2.0の廃止は2014年11月17日)
ざっとチェックしてsample動かしてみたところ、カレンダーはqueryが多彩で特定のイベントだけ取得するような部分取得が可能なようでほっとした。
1/16 スプレッドシートにはcarenderAPIが用意されていないことが判明。
お蔵入りになりました。
チャンチャン