前提・実現したいこと
Googleスプレッドシートの1セルに値を入れてその値をGASの引数にして、その横のセルに返却値を表示したい。
###実装内容
GAS
1function method_geo(address) { 2 if (address === '') { 3 return 4 } 5 var api_url = "https://maps.googleapis.com/maps/api/geocode/json?address=" + encodeURI(address); 6 api_url += '&key=[API Keyをここに書きました。]' 7 var response = UrlFetchApp.fetch(api_url); 8 var result = JSON.parse(response); 9 var location = result['results'][0] 10 if (typeof location === 'undefined') { 11 return 12 } 13 location = location['geometry']['location'] 14 return {lat: location['lat'], lon: location['lng']} 15}
APIを有効にし、Keyも発行しソースコードに記載しました。
式を入れて更新しても、GASの
発生している問題・エラーメッセージ
試したこと
①スプレッドシートの右側セルに=コード.gs.method_desu(A1)とGASと連携するために記述⇒状況かわらず
②GASの黒▲実行押下⇒状況変わらず
③おそらくマニュアルにのっている基礎内容だと思うのですがそのページを探したのですが見つけられず
方法は2つあると思っています。1つはGASのjapascript記載でスプレッドシートのセルを指定して実行操作する方法。もうひとつはGASにメソッドだけ作り、スプレッドシートのセル内にメソッド記載して実行表示する方法。後者の方で利用したいです。どなたかアドバイスよろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
win10
Google App Script
###自己解決した部分(2019/06/02追記)
頂いた膨大なマニュアルの中自分が目当てとするところがどうしても見つけられず他サイトを探したところ、以下が見つかりました。
私が連携を取れなかった原因は、今までスプレッドシートとGASを別々に作成していたために連携が取れなかったということがわかりました。
###まだ残る課題
リターン値でエラーが起きてしまいました。
GAS
1var idotokeido = ""←ステートメントに;がありませんエラー 2str idotokeido = ""←ステートメントに;がありませんエラー 3 4function geo(address) { 5 if (address === '') { 6 return 7 } 8 var api_url = "https://maps.googleapis.com/maps/api/geocode/json?address=" + encodeURI(address); 9 api_url += 'APIキー' 10 var response = UrlFetchApp.fetch(api_url); 11 var result = JSON.parse(response); 12 var location = result['results'][0] 13 if (typeof location === 'undefined') { 14 return 15 } 16 location = location['geometry']['location'] 17 location['lat'] 18 idotokeido = str(location['lat']) + "," + str(location['lng'])←indexに1がありませんエラー 19 idotokeido = location['lat'] + "," + location['lng']←indexに1がありませんエラー 20 return idotokeido 21}
ひとつのセルに12345,6789というように緯度経度を出したいのですが、そもそもstrではなくvar宣言が間違っているのでしょうか。GASの文法にはstrがそもそもなく自動認識varとして記載してもだめでした。
###エラーがなくなるが0になってしまった
+ではなく&で繋げました。
でもリターンが0としてスプレッドシートには表示されてしまいました。
GAS
1var tr = "" 2function geo_method(address) { 3 if (address === '') { 4 return 5 } 6 var api_url = "https://maps.googleapis.com/maps/api/geocode/json?address=" + encodeURI(address); 7 api_url += 'APIキー' 8 var response = UrlFetchApp.fetch(api_url); 9 var result = JSON.parse(response); 10 var location = result['results'][0] 11 if (typeof location === 'undefined') { 12 return 13 } 14 location = location['geometry']['location'] 15 tr = location['lat'] & "," & location['lng'] 16 return tr 17}
回答2件
あなたの回答
tips
プレビュー