越前R&D

アクセスカウンタ

zoom RSS Google Apps Script からMongoDBを使う (侵攻編)

<<   作成日時 : 2014/04/10 20:51   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

さて。MongoLab にデータベースは作った。これをGoogle Apps Script からどう利用するか。


MongoLab のドキュメント( http://docs.mongolab.com/restapi/ )によると、利用方法は2つ。


1.サーバーサイドの場合、各言語で用意されている MongoDB Driver から使う
2.REST APIを使う(サーバーサイド・クライアントサイド共に)

Google Apps Script で 使える MongoDB Driver はない(node.js ・V8・narwhal ならドライバが用意されていたらしい)ようなので、REST APIを叩くしかなさそう。
ただし、MongoLabとしては1.による接続を強く推奨しており、1.の方法が使えない場合のみ2.でやってくれ、というスタンスのようだ。



MongoLab REST API 抜粋 

BASE URL: "https://api.mongolab.com/api/1"

List Databases :
 HTTP GET , BASE URL + "/databases?apiKey=myAPIKey"
List Collections :
 HTTP GET , BASE URL + "/databases/{database}/collections/?apiKey=myAPIKey"
List documents :
 HTTP GET , BASE URL + "/databases/{database}/collections/{collection}?apiKey=myAPIKey&{options}"

Insert document :
HTTP POST , BASE URL + "/databases/{database}/collections/{collection}?apiKey=myAPIKey"
Content-Type: application/json
Body: <JSON data>

Update multiple documents:
HTTP POST , BASE URL + "/databases/{database}/collections/{collection}?apiKey=myAPIKey&q={"_id:{id}}"
Content-Type: application/json
Body: <JSON data>

<JSON data>:= {"$set" : {(更新する内容のオブジェクト)}

Delete single document:
HTTP DELETE , BASE URL + "/databases/{database}/collections/{collection}/{_id}?apiKey=myAPIKey"




こんな感じでアクセスすると良いらしい。(他にも細かいオプションなど、いろいろある)
API Key はMongoLabのサイトの右上にあるユーザー名のリンクからたどると、教えてくれる場所がある。

Google Apps Script なら、こんな感じかしら。



API_KEY="?apiKey=XXXXX"

function hello_mongolab() {
var MONGO_LAB_URLS = 'https://api.mongolab.com/api/1/databases/idress/collections/formed_bbs' + API_KEY;

var url = MONGO_LAB_URLS ;

Logger.log("Query URL : " + url);
var response = UrlFetchApp.fetch(url);
Logger.log(response);
}




でもって、 hello_mongolab を実行、ログを見る。



[14-04-10 19:15:55:851 JST] Query URL : https://api.mongolab.com/api/1/databases/idress/collections/formed_bbs?apiKey=XXXXX
[14-04-10 19:15:56:249 JST] [ { "_id" : { "$oid" : "5345834111262589156e3648"} , "title" : "test" , "content" : "test content"} ]




うん、中にはいってるオブジェクトが一つ返ってる。POSTもしてみよう。




function test_post_docmuent(){
var MONGO_LAB_INSERT= "https://api.mongolab.com/api/1/databases/idress/collections/formed_bbs/"

var url = MONGO_LAB_DELETE + '53458bdbe4b0bbfbddeb83dc'
var opt = {method: 'post' ,
payload: JSON.stringify( {title: 'post test' , content:'post text.'}) ,
contentType: "application/json" ,
muteHttpExceptions: true
};

response = UrlFetchApp.fetch( MONGO_LAB_INSERT , opt );

Logger.log(response)
}






これでPOST してもっかいGET



[14-04-10 19:30:29:180 JST] { "title" : "post test" , "content" : "post text." , "_id" : { "$oid" : "53464895e4b092586f319ca1"}}

[14-04-10 19:31:31:627 JST] Query URL : https://api.mongolab.com/api/1/databases/idress/collections/formed_bbs?apiKey=GQ2P0d_pWAB1H8j2Dcn2XtdA1o-HcqZZ
[14-04-10 19:31:32:010 JST] [ { "_id" : { "$oid" : "5345834111262589156e3648"} , "title" : "test" , "content" : "test content"} , { "_id" : { "$oid" : "53464895e4b092586f319ca1"} , "title" : "post test" , "content" : "post text."} ]




よし、増えてる。

んじゃ、MongoLab アクセス用のあれそれをライブラリにまとめようかねえ。

#どうでもいいがこのブログ、コード書くには向いてないな……。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Google Apps Script からMongoDBを使う (侵攻編) 越前R&D/BIGLOBEウェブリブログ
文字サイズ:       閉じる