[英]How to automatically display a user email in an HTML form field using Google Apps Script and JavaScript
我已经使用Google HTML服务创建了HTML表单。 当用户打开表单时,如何在电子邮件字段中自动显示他们的电子邮件? 我已经有一个用于日期onload
的功能。 我尝试使用google.script.run
,但无法正常工作。 这是我的HTML代码:
<body onload="todaysDate()">
<form>
<label><span> Requestor: </span><input id="reqEmail" type="text" name="reqEmail" placeholder="Your email..."></label>
<br>
<label><span>Requestor's department: </span><input id="reqDept" type="text" name="reqDepartment" placeholder="Your deparment..."></label>
<br>
<label><span>Date of Submission: </span><input id="subDate" type="text" name="dateSubmission"></label>
<br>
<label><span>Required delivery date: </span><input id="delDate" type="date" name="dateDelivery"></label>
<br>
</form>
</body>
这是我的Code.gs:
//Get user email
function getUserEmail() {
var userEmail = Session.getActiveUser().getEmail();
Logger.log(userEmail);
}
这是我的JavaScript:
//Insert todays's date to "Date of Submission"
var d = new Date();
var curr_day = d.getDate();
var curr_month = d.getMonth() +1;
var curr_year = d.getFullYear();
function todaysDate() {
document.getElementById('subDate').value=(curr_month + "-" + curr_day + "-" + curr_year);
};
google.script.run.getUserEmail(userEmail);
var email = document.getElementById('reqEmail');
email.value = userEmail;
我想,您读过这篇文章,但仍然值得一提。
google.script.run
如何运作? 它只是在“服务器”端运行一个功能。 这个服务器端函数可以return
一些结果(这是达伦在上一个答案中提出的),但是您仍然需要告诉脚本该如何处理此结果。
而且,如果您想对客户端的结果做些事情,则需要使用.withSuccessHanlder
部分-借助它的帮助,您可以指定客户端函数来接受服务器函数的工作结果。 在您的情况下-结果是用户电子邮件。 因此,它就像google.script.run.withSuccessHandler(todaysDate).getUserEmail()
-您不需要将任何参数传递给getUserEmail()
因为它不需要它们。
但是,您需要todaysDate()
更改todaysDate()
函数。
function todaysDate(userEmail) {
document.getElementById('subDate').value = (curr_month + "-" + curr_day + "-" + curr_year);
document.getElementById('reqEmail').value = userEmail;
};
而不是为<body>
标记分配onload
函数,您只需将此行添加到<script>
google.script.run.withSuccessHandler(todaysDate).getUserEmail();
。
总体而言,它看起来像这样:
<script>
//Insert todays's date to "Date of Submission"
var d = new Date();
var curr_day = d.getDate();
var curr_month = d.getMonth() +1;
var curr_year = d.getFullYear();
google.script.run.withSuccessHandler(todaysDate).getUserEmail();
function todaysDate(userEmail) {
document.getElementById('subDate').value = (curr_month + "-" + curr_day + "-" + curr_year);
document.getElementById('reqEmail').value = userEmail;
};
</script>
我不太熟悉Google HTML服务,但是如果它像普通的javascript一样工作,则您应该能够:
-更新“ getUserEmail”功能以返回电子邮件地址:
//Get user email
function getUserEmail() {
var userEmail = Session.getActiveUser().getEmail();
Logger.log(userEmail);
return userEmail;
}
-更新您的JavaScript以接收电子邮件地址:
var userEmail = getUserEmail();
var email = document.getElementById('reqEmail');
email.value = userEmail;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.