【发布时间】:2020-09-16 13:13:49
【问题描述】:
我有一个 Google 表单来收集在偏远地区工作的员工的信息
Emp No *
Punch *
Customer details / mode or travel
数据进入具有以下结构的 Google 电子表格
Timestamp Emp No Punch Remark Name GeoCode GeoAddress Email
我可以通过以下脚本捕获用户的 GPS 坐标。我制作了一个网络应用程序(任何人甚至匿名都可以运行)并要求用户单击链接。
我不能做什么:
我想保存填写表单的用户的电子邮件 ID(或员工编号)。但是电子邮件 ID 没有被捕获到表单中。如果我填写表格,则会捕获电子邮件 ID。对于其他用户,它不会被捕获。我不希望所有用户都验证脚本(以登录用户身份运行脚本)。它必须通过其他方式捕获。有可能吗?
如果 GPS 未被捕获(它为空),我想在 HTML 页面中显示不同的消息。怎么做?
代码.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile("Index");
}
//
function getLoc(value) {
var destId = FormApp.getActiveForm().getDestinationId() ;
var ss = SpreadsheetApp.openById(destId) ;
var respSheet = ss.getSheetByName("Location");
var numResponses = respSheet.getLastRow();
var currentemail = Session.getActiveUser().getEmail();
var c=value[0]; var d=value[1];
var e=c + "," + d ;
//respSheet.getRange(numResponses,6).setValue(e);
//respSheet.getRange(numResponses,8).setValue(currentemail);
var response = Maps.newGeocoder().reverseGeocode(value[0], value[1]);
var f= response.results[0].formatted_address;
//respSheet.getRange(numResponses,7).setValue(f);
respSheet.getRange(numResponses,6,1,3 ).setValues([[ e, f, currentemail ]]);
}
//
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>
<body>
<p>Please ensure your GPS is on to record your location. You can generate the report from website to check. Pl. close this window (version 3)</p>
</body>
</html>
【问题讨论】:
-
请他们填写
-
他们可以填写错误的员工编号。我想避免它。此外,我想记录谁在没有做任何事情(身份验证)的情况下填写了它。 PL。帮我解决第二个问题,这可能不是很难
-
这是 gsuite 吗?您如何期望脚本凭空知道一些事情?如果他们不进行身份验证,脚本将如何知道有关执行脚本的用户的任何信息?关于第二个问题,如答案中所说,使用
if...else客户端或服务器端withSuccessHandler。
标签: javascript authentication google-apps-script web-applications