Open ShogoHirasawa opened 3 years ago
GASの全コード貼れますか?
function wmap_getLocationNumber(address) { var api_url = "https://maps.googleapis.com/maps/api/geocode/json?address=" + encodeURI(address); var response = UrlFetchApp.fetch(api_url); var result = JSON.parse(response); var location = result['results'][0]['geometry']['location']; return [ [ location['lat'] , location['lng'] ] ]; }
がコードの全容で
TypeError: Cannot read property 'geometry' of undefined wmap_getLocationNumber @ コード.gs:5
がエラーコードになってます
なるほど。wmap_getLocationNumber
をセルで実行している感じですか?
おそらくAPIキーの指定が必要かと思いますがどこかで指定してますか?
wmap_getLocationNumberを関数としてセルで呼び出している感じです
APIキーを取得しているはずなのですが、上手く行かないんですよね・・・。 もう一度、APIキーの取得からやってみます・・・。
var api_url
の部分でAPIキーを指定できますか??
?key=xxxx
ありがとうございます 11:00~のMTG後に、アドバイス頂いた手順でやってみます!
はい! ちなみにGASでClassも用意されてるみたいですね。知らなかったです。 あと以下のコードをApp Script内で実行しても実行しても緯度・経度取得できると思います。(MapboxのGeocoding APIです) スプレッドシートのURL指定とシート&セル指定が必要です。アクセストークンは僕のを使用してます。
//変数spreadsheetに指定のスプレッドシートオブジェクトを取得
var sp_url = "https://docs.google.com/spreadsheets/d/xxxxxxxx/"; //ここを修正
var spreadsheet = SpreadsheetApp.openByUrl(sp_url);
var sheet = spreadsheet.getSheetByName("xx"); //ここを修正
var lastRow = sheet.getLastRow();
var location = ""
function myFunctionJSON() {
for(let i = 1; i < lastRow; i++) {
var row = i + 2
var range = sheet.getRange(row,xx); //ここを修正
var value = range.getValue();
var location = value
var url = "https://api.mapbox.com/geocoding/v5/mapbox.places/" + location +".json?access_token=pk.eyJ1IjoidGVla2F5MDkiLCJhIjoiY2treHJiZXBlNTU3NDJ2cXQ0dDE3ZW5qNSJ9.En9xipyTDvmwC4r7KXgWrw"
var json = UrlFetchApp.fetch(url).getContentText();
var jsonData = JSON.parse(json);
var center = jsonData.features[0].center;
sheet.getRange(row,xx).setValue(center[0]) //ここを修正
sheet.getRange(row,xx).setValue(center[1]) //ここを修正
}
}
これって、sheet.getRange(row,xx)の部分に住所が書かれたセルを指定するって感じですかね?
そうです!
以下のコードをGASで使ってみたがエラーがでる
function wmap_getLocationNumber(address) { var api_url = "https://maps.googleapis.com/maps/api/geocode/json?address=" + encodeURI(address); var response = UrlFetchApp.fetch(api_url); var result = JSON.parse(response); var location = result['results'][0]['geometry']['location']; return [ [ location['lat'] , location['lng'] ] ]; }
TypeError: Cannot read property 'geometry' of undefined wmap_getLocationNumber @ コード.gs:5