人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

GoogleAppsScriptでSpredSheetsに逆GeoCodingできる関数を作りたいのですが、行き詰っています。SpredSheetsにGeoCodingする関数は、
function getGeocode(address) {
var gc = Maps.newGeocoder();
var result = gc.geocode(address);
var lat = result.results[0].geometry.location.lat;
var lng = result.results[0].geometry.location.lng;

return lat+","+lng;
}
のようですが(参照 http://filemaker-kou.seesaa.net/article/190100083.html )、逆GeoCodingできる関数が作れません。
Google Maps APIver2時代には、
function getAddress(placeCoord) {
// Return Address by placeCoord (reverse geocoding) placeCoord=lat,lng
if (placeCoord == "") {
return "You have to write the name the place"
}
var url = "http://maps.google.com/maps/geo?q="+ placeCoord+"&output=json";
var response = UrlFetchApp.fetch(url);
var str=eval('(' + response.getContentText() + ')').Placemark[ 0].address;
return str;
}
上記のような方法があったようですが、バージョンが変わってしまったため無理のようです。

どなたか、ご教示いただけませんか?

●質問者: ozaki
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Cherenkov
●200ポイント

http://maps.google.com/maps/geo?q=137,190&output=json
APIは生きてるんじゃないですかね。(リファラ関係か、アドレスバーにコピペでエンターキー)
SpredSheetsを読み込む部分を含めて現状のコード、もしくはコピペで再現できるコードを提示したほうが早いです。


追記
C1=getGeocode(A1,B1)でやる方法

function getAddress(lat, lng) {
 var placeCoord = lat.toString() + ',' + lng.toString();
 var url = "http://maps.google.com/maps/geo?q="+ placeCoord+"&output=json";
 var response = UrlFetchApp.fetch(url);
 var str = JSON.parse(response.getContentText()).Placemark[0].address;
 return str;
}

ozakiさんのコメント
朝早くからありがとうございます。 http://maps.google.com/maps/geo?q=137,190&output=json でAPIにアクセスしたところちゃんと情報が返ってきました! そこで、Google Maps APIver2時代のコードを使って下記のコードをスクリプトエディターに保存して、シートで「C1=getAddress(A1,B1)」としたのですが、エラー: TypeError: Cannot read property "0" from undefined. (line 11)と出てしまいます。 function getAddress(placeCoord) { //Return Address by placeCoord (reverse geocoding) placeCoord=lat,lng if (placeCoord == "") { return "You have to write the name the place" } //var url = "http://maps.google.com/maps/geo?q="+ placeCoord+"&output=json"; var url = "http://maps.google.com/maps/geo?q='placeCoord'&output=json"; var response = UrlFetchApp.fetch(url); var str=eval('(' + response.getContentText() + ')').Placemark[0].address; return str; } GeoCodingする関数の場合は、「C1=getGeocode(A1,B1)」でちゃんと緯度経度が挿入されるのですが・・・。 お助けください!

Cherenkovさんのコメント
function getAddress(placeCoord)で仮引数がひとつになってて、呼び出しがgetAddress(A1,B1)になってるからでは

Cherenkovさんのコメント
そうでもないか

Cherenkovさんのコメント
C1=getGeocode(A1)でうまくいきました。 Cannot read property "0" from undefined. (line 11)とでる原因はurl変数の文字列の書式がまちがってるから。

Cherenkovさんのコメント
Logger.log(str);とかBrowser.msgBox(str);でプリントデバッグ。

Cherenkovさんのコメント
http://gyazo.com/f5c80e70ed956df12edb407b5a782088

Cherenkovさんのコメント
C1=getGeocode(A1,B1)の方を回答に追記

ozakiさんのコメント
素早い対応ありがとうございました。実は昨日の昼ごろから調べていて、徹夜した次第でした。見事に解決いたしました! 画像まで作っていただいて本当にありがとうございました!!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ