繁体   English   中英

如何使用Google Apps脚本和JavaScript在HTML表单字段中自动显示用户电子邮件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM