libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

UrlFetchとXmlデータの利用 (2/6)

作成:2011-07-11 07:58
更新:2011-11-04 16:29

■UrlFetchAppを使いPOSTアクセスす

通常のGETアクセスは、このように非常に簡単です。が、POSTでアクセスを行う場合、いろいろと考えなければならないことが出てきます。

POSTは、フォームの送信などに用いられるメソッドですね。これは送信されたデータを受け取り処理するのに用いられます。従って、大半のPOSTアクセスは、単にメソッドをPOSTにするというだけでなく、あわせて必要な情報を送る必要があります。

このために、fetchメソッドのオプションとして用意するのが「payload」です。これを使い、以下のような形でオプションのデータを用意してやります。
変数 = {
    method : "post",
    payload : クエリー文字
}
クエリー文字というのは、abc=xyz&def=uvwというように、イコールと&を使ってキーと値をつなげた形式のテキストです。それそれの値はURLエンコードしたものが渡されます。このクエリー文字として、送信するパラメータ情報をpayloadに用意しておくことで、POST送信することが可能となります。

参考例として、libroが用意しているテストサーバー(App InventorというAndroidの簡易開発環境の簡易Webデータベース用に公開しているもの)を使って、POST送信でデータを保管したり取り出したりしてみましょう(下のリスト欄を参照)。

このテストサーバーは、データの送信と必要なデータの取得の2つのアドレスを用意してあります。それぞれ以下のようになります。

・データの送信
http://tuyano-sample.appspot.com/storeavalue

・データの取得
http://tuyano-sample.appspot.com/storeavalue

データの送信では、保管するデータの名前を示す「tag」と、そこに保管する値となる「value」の2つの値を送ります。例えば、「GAS」という名前で「test」というデータを送信するなら、
tag=GAS&value=test
このようなクエリー文字をpayloadに用意すればいいわけです。これでデータがサーバーに保管されます。また、保管したGASのデータを取り出すなら
tag=GAS
このようにクエリー文字をpayloadに用意してやればいいわけです。――以下のサンプルでは、queryという変数にクエリー文字を用意してあります。データの送信/取得のいずれも、["STORED", "GAS", "This is Test"]あるいは["VALUE", "GAS", "This is Test"]というようなテキストがログ出力されます。それぞれ保管または取り出したデータの情報がアクセス側に返送されているのですね。

基本がわかったら、変数queryの値を変更して(tagが同じだと他の人がアクセスして値を書き換える可能性があります。独自のtag名を指定してください)、データをテストサーバーに保管したりとり出したりしてみましょう。POSTによるアクセスの基本がよくわかるでしょう。使い方がわかったら、それぞれのWebアプリケーションなどに用意したフォームの送信をGoogle Apps Scriptから行ってみてください。POSTによるアクセスができると、スクリプトの応用範囲がぐっと広がりますよ。

※App Inventor用テストサーバーについては以下を参考に
http://libro.tuyano.com/index3?id=356001

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function addData(){
	var url = "http://tuyano-sample.appspot.com/storeavalue";
	var query = "tag=GAS&value=This%20is%20Test";
	var parameters = {
		method : "post",
		payload : query
	};
	var response = UrlFetchApp.fetch(url,parameters);
	Logger.log(response.getContentText());
}

function getData(){
	var url = "http://tuyano-sample.appspot.com/getvalue";
	var query = "&tag=GAS";
	var parameters = {
		method : "post",
		payload : query
	};
	var response = UrlFetchApp.fetch(url,parameters);
	Logger.log(response.getContentText());
}

※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る