javascript - 使用 Google Script 在 Google Forms 中提交时获取地理位置
问题描述
我有一个 Google 表单,我想在其中获取用户地理位置以及输入。目前,我可以通过让用户在提交答案后点击一个网址来获得它。这是执行此操作的 Google Script 中的代码:
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 url,但我似乎找不到办法。这是正确的方法吗?我怎样才能让它发挥作用?
提前致谢!
解决方案
也许这有效:https ://www.youtube.com/watch?v=J93uww0vMFY
地理标记(地理标记和时间戳)谷歌表单教程。添加有关提交 Google 表单的设备的纬度、经度和地址(街道名称和号码、城市、州、邮政编码和国家/地区)的信息。在谷歌表单中链接用户的位置。谷歌表单与谷歌地图的集成。
下载脚本的链接如下:
代码.gs:https: //www.youtube.com/redirect? v= J93uww0vMFY &event=video_description&q=https%3A%2F%2Fdrive.google.com%2Fopen%3Fid%3D1D4vTzUGZAf3_ZDVMeW760i1KoZCn37un&redir_token=VQ2rLeQvyQea-mq9_kGhOT4Oxihd8MTUxNzMygY4Oxihd8MTUx5
推荐阅读
- python - 如何使用python从串行读取数据?
- reactjs - 如何使用 React Hooks 提取通常使用 yield 调用的功能?
- python - 在 Python 中读取列表
- proguard - 使用 Proguard 保留所有没有特定字符的方法
- java - 在 Java 中使用访问者模式进行双重调度
- algorithm - 如果一个循环执行固定次数,是否会影响时间复杂度
- installshield - 如何在 InstallScript 中散列字符串?
- cmd - 在cmd中制作循环进度条(或加载条)
- node.js - mongoose.connect() 将不再使用变量代替字符串
- react-hooks - “错误:对象作为 React 子项无效”来自 useState