×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。



>> ユーザーガイド >> 基本コンセプト >> スクリプト と Google.Accounts | スクリプトとコンテナ | 組み込みサービス | 外部APIの利用 |


外部APIの利用

Google.Apps.ScriptはWebのどこからでも相互通信が可能です。ここでは異なる他のAPIとの連携をどのようにスクリプト上で実現するのかを見ていきましょう。


WWW GoogleStyle


他のGoogleやサードパーティのAPIの利用

Google.Apps.Scriptにおいては、全部のGoogle.APIsに組み込みサービスが備わっているわけではありません。 すべてのサービスの統合を保障しようと努めていますが、幸いスクリプトはパブリックHTTPインターフェイスを通じてAPIsにリクエストできます。そこで、Google以外のAPIであっても使用することは可能です。

スクリプトは直接UrlFetch.serviceを利用してGoogle.APIsにリクエストすることができます。 APIへのリクエストの流れには、生のHTTPリクエストの作成とHTTPレスポンスの処理が関与します。

次のコードの行はYouTube APIへのリクエストで、”dog skateboarding”のビデオフィードがリターンされます。


var
url =
"https://gdata.youtube.com/feeds/api/videos?" + "q=skateboarding+dog" + "&start-index=21" + "&max-results=10" + "&v=2";
var
response =
UrlFetchApp.
fetch(url);

同様のコード行であれば、HTTPを介したアクセス可能な任意のAPIに適応されうるものです。

外部APIへデータを送るには、次の例を利用するとよいでしょう。これはYouTubeにビデオをアップロードするためのものです。


var
payload =
"... video data ..."
;
var
headers = {
"GData-Version": "2", "Slug": "dog-skateboarding.mpeg"
// Other required parameters for YouTube API
};
var
options = {
"method"
:
"post"
,
"headers"
:
"headers"
,
"payload"
:
payload
};
var
url =
"https://uploads.gdata.youtube.com/feeds/api/users/default/uploads"
;
var
response =
UrlFetchApp.
fetch(url, options);

上記の応答変数の処理方法についてはこのガイドで後述します。


SOAPサービスとの相互通信

Soap.Serviceで動作させるための完全なガイドは、Soap.Serviceで提供しています。
ここではSOAP.tutorialのデモ用に利用されたGeoIP.SOAP.serviceで相互通信を行う簡単な例です。


function
determineCountryFromIP(ipAddress) {
var
wsdl = SoapService.wsdl(
"http://www.webservicex.net/geoipservice.asmx?wsdl"
);
var
geoService = wsdl.getGeoIPService();
var
param = Xml.element(
"GetGeoIP"
, [ Xml.attribute(
"xmlns", "http://www.webservicex.net/"
), Xml.element(
"IPAddress"
, [ ipAddress ]) ]);
var
result = geoService.GetGeoIP(param);
return
result
.Envelope.Body.GetGeoIPResponse.GetGeoIPResult.CountryCode.Text
; }


XMLのパース

XMLのパースに関する完全なガイドはParsing an XML Document tutorialで提供されています。 XMLのパースに関してビギナーの方は、このチュートリアルをまず読むべきでしょう。ただし、はじめのうちは困難を伴う可能性があります。

リクエスト中のAPIが生のXMLレスポンスを返した場合、XMLレスポンスはHttpResponseオブジェクトのgetContentTextメソッドを使用してアクセスすることができます。


// Make request to API and get response
var xml = response.getContentText(); var doc = Xml.parse(xml, true);
// ... Continue with the rest of the tutorial

APIへXMLリクエストを行うとき、送信するために文字列を一緒に結合するか、またはXml.parseJSメソッドを使用することによってXMLを構築します。 このメソッドはJavaScriptオブジェクトを取得して、XML表現を返します。XML文字列の取得をより容易にしてくれるものです。


var entry = {
   
"entry"
: {
"group"
: {
"title": "Dog Skateboarding", "description": "My dog gets some serious air"
},
"keywords": "dog, skateboard"
} } var payload = Xml.parseJS(entry).toXmlString();
// Make request to API with payload


JSONにおける動作

JSONでの動作はXMLにおける動作と似ていますが、構文解析やJSONオブジェクトのエンコーディングははるかに簡単です。

リクエスト中のAPIが生のJSONレスポンスを返した場合、JSON文字列のレスポンスはHttpResponseオブジェクトのgetContentTextメソッドを使用してアクセスすることができます。 この文字列が取得されたら、ネイティブなオブジェクト表現を得るために文字列上にJSON.parseを呼び出すだけです。


// Make request to API and get response
var
json = response.getContentText();
var
data = JSON.parse(json);
Browser.
msgBox(data.title);

リクエストを行うには、JavaScriptオブジェクトの文字列表現を作ためにJSON.stringifyを使用します。


var
data = {
"title": "Dog Skateboarding", "description": "My dog gets some serious air"
}
var
payload = JSON.stringify(data);
// Make request to API with payload


OAuthのサービスにリクエスト

ほとんどのAPIは、ユーザーに代わってスクリプトに動作をさせることができます。しかしこうしたことを可能にさせるためには、通常、ユーザーのデータへのアクセスができるようにしなければならないので、 ユーザーからの承認等を必要とします。
これを行う最も一般的な方法の1つは、OAuthプロトコルを介在させることです。Google Apps Scriptはをサポートしています。

Google Apps ScriptでOAuthを始めようとするビギナーは、まず、Twitterの承認マネージャーのチュートリアルを読んでください。 これはTwitterのAPIに対して、認可された要求の作成方法を完全な形で紹介しています。
上級ユーザーは次の例で開始することが速いかもしれません。この例では現時点で認可されたユーザのツイートを取得するために許可された要求を行います。


var
consumerKey =
"... register your app with Twitter ...";
var
consumerSecret =
"... register your app with Twitter ...");
var
oauthConfig =
UrlFetchApp.
addOAuthService(
"twitter"
); oauthConfig.setAccessTokenUrl(
"http://api.twitter.com/oauth/access_token"
); oauthConfig.setRequestTokenUrl(
"http://api.twitter.com/oauth/request_token"
); oauthConfig.setAuthorizationUrl(
"http://api.twitter.com/oauth/authorize"
); oauthConfig.setConsumerKey(consumerKey); oauthConfig.setConsumerSecret(consumerSecret);
// "twitter" value must match the argument to "addOAuthService" above.
var
options = {
"oAuthServiceName"
:
"twitter"
,
"oAuthUseToken"
:
"always"
};
var
url = "http://api.twitter.com/1/statuses/user_timeline.json";
var
response =
UrlFetchApp.
fetch(url, options);
var
tweets = JSON.parse(response.getContentText());
// Handle tweets

OAuthConfigオブジェクトとオプション変数は、大半のOAuthの構成が発生するところにあります。 スクリプトはOAuthのサービスを設定し、OAuthのサービスを使用するためにUrlFetchApp.fetchに指示を出す必要があります。

一度設定されたoAuthServiceNameoAuthUseTokenパラメータがUrlFetchApp.fetchオプションで提供されている限り、OAuthを介してリクエストをすることはほぼ明確になります。 UrlFetchApp.fetchの他のすべての機能は、OAuthを使用している間利用できます。

2012-10-14


pageTOP