1

次の2つのファイルを作成しました。

code.gs

function doGet() {
  var html = HtmlService.createHtmlOutputFromFile('html.html');
  return html;
}

html.html

<html>
<body>
<p id="messaging">Click the button to get your coordinates:</p>
<button onclick="getLocation()">Where am I</button>

<script>
  var message=document.getElementById("messaging");
  function getLocation() {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(showPosition);
    } else {
      message.innerHTML="Geolocation is not supported.";
    }
  }

function showPosition(position) {
  message.innerHTML="Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude;
}
</script>
</body>
</html>

公開されたURLを呼び出すと、期待されるメッセージとボタンが表示されます。ボタンをクリックすると、「ジオロケーションはサポートされていません」という失敗メッセージが表示されます。html.htmlをファイルに保存してブラウザで開くと、期待どおりに機能します。

何か案は?

4

4 に答える 4

2

2016年現在、ジオロケーションはIFRAMEモードのHtmlServiceで機能します。ここでテストしてください:GAS-ジオロケーション

ChromeとFirefox(デスクトップ)でテストしましたが、どちらも問題ありません。Safari(デスクトップ)では動作しません(共有場所の確認ボックスがポップアップしません。Safariが嫌いです!)

面白いことに、iOS 9ではSafariで動作しますが、iOS 9では最新のChromeでは動作しません(同じ問題、確認ポップアップなし)

于 2016-02-24T02:59:49.903 に答える
1

ここではカハが犯人だと思います。Cajaプレイグラウンドでコードを実行して、動作が同じかどうかを確認してください。同じ場合、CajaIssueTrackerで課題を開くことができます

CajaがHtmlServiceで何をするかをもっと知るには、このページを参照してください。

上記の回答の更新 は廃止されました。これで、ブラウザで利用可能なnavigator.geolocationオブジェクトを使用して場所にアクセスできます。

于 2012-10-01T09:15:44.523 に答える
1

GeoLocationはHtmlServiceではまだ利用できません

于 2012-10-04T13:51:49.727 に答える
0

GoogleサイトのGoogleAppsScriptで何かしたいので、コードを試しました。

現時点では、GeoLocationはHTMLServiceでまだサポートされていないようですが、他の誰かにも役立つ可能性のある特定のニーズ(つまり、Googleサイトとの組み合わせ)に対する可能な回避策を見つけました。

うまくいくのは、カスタムの「Googleサイトガジェット」を作成することです

チュートリアルポイントのサンプルコードを使用する

ガジェット用の「スケルトン」XMLファイルができあがります。

<?xml version="1.0" encoding="UTF-8"?>
<Module>

<ModulePrefs title="GeoLocation"
            >
</ModulePrefs>

<Content type="html"><![CDATA[
    
    <form>
    <input type="button" onclick="getLocation();"
    value="Get Location"/>
    </form>
    
    <script>
    function showLocation(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    alert("Latitude : " + latitude + " Longitude: " + longitude);
    }
    
    function errorHandler(err) {
    if(err.code == 1) {
    alert("Error: Access is denied!");
    }else if( err.code == 2) {
    alert("Error: Position is unavailable!");
    }
    }
    function getLocation(){
    
    if(navigator.geolocation){
    // timeout at 60000 milliseconds (60 seconds)
    var options = {timeout:60000};
    navigator.geolocation.getCurrentPosition(showLocation,
    errorHandler,
    options);
    }else{
    alert("Sorry, browser does not support geolocation!");
    }
    }
    </script>
]]></Content>
</Module>

これで、アラートの代わりに、結果をURLパラメーターとしてGoogle AppsScriptsWebアプリに渡すことができます。

理想的ではありませんが、今のところ問題なく動作しているようです。

于 2014-12-12T10:21:22.003 に答える