使用Google脚本在Google表单中提交提交时获得地理位置信息

问题描述 投票:3回答:1

我有一个Google表单,我想在其中获取用户地理位置以及输入信息。目前,我可以通过在用户提交答案后单击用户的URL来获得它。这是Google脚本中执行此操作的代码:

function doGet() {
    return HtmlService.createHtmlOutputFromFile("Index");
}


function getLoc(value) {
  var destId = FormApp.getActiveForm().getDestinationId() ;
  var ss = SpreadsheetApp.openById(destId) ;
  var respSheet = ss.getSheets()[0] ;
  var data = respSheet.getDataRange().getValues() ;
  var headers = data[0] ;
  var numColumns = headers.length ;
  var numResponses = data.length;
  var c=value[0]; var d=value[1];
  var e=c + "," + d ;
   if (respSheet.getRange(1, numColumns).getValue()=="GeoAddress") {    
       respSheet.getRange(numResponses,numColumns-2).setValue(Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm:ss"));
       respSheet.getRange(numResponses,numColumns-1).setValue(e);
       var response = Maps.newGeocoder().reverseGeocode(value[0], value[1]);
       f= response.results[0].formatted_address;
       respSheet.getRange(numResponses,numColumns).setValue(f);
     }
   else if (respSheet.getRange(1,numColumns).getValue()!="GeoAddress") {
       respSheet.getRange(1,numColumns+1).setValue("GeoStamp");
       respSheet.getRange(1,numColumns+2).setValue("GeoCode");
       respSheet.getRange(1,numColumns+3).setValue("GeoAddress");
  }
}

和Index.html文件:

<!DOCTYPE html>
<html>
<script>
(function getLocation() {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(showPosition);
      }
})()      
function showPosition(position){
 var a= position.coords.latitude;
 var b= position.coords.longitude;
 var c=[a,b]
 getPos(c)
 function getPos(value){
 google.script.run.getLoc(value);
 }
}
</script>
</html>

而不是让用户单击URL,我希望在用户提交表单时将地理位置自动输入到响应表中。我可以使getLoc函数在提交触发器上运行,但是html函数不能运行。我相信可能是因为doGet函数已经是触发器,但是它需要打开浏览器页面才能运行。如果是这样,理想的解决方案是在用户提交浏览器后将浏览器重定向到Google Script网址,但我似乎找不到解决方法。这是正确的方法,如何使它起作用?

提前感谢!

javascript html google-apps-script google-form
1个回答
0
投票

您好,当我执行您的code.gs时,我总是收到消息错误“无法从未定义中读取属性0”,该错误位于第13行,该行被声明为:var c = value [0];。 .....我想执行您的代码,看看它是什么样子

© www.soinside.com 2019 - 2024. All rights reserved.