我需要在Google网站上放置一些嵌入代码,此网站仅限于我们的Google域成员。我可以将此JavaScript放在Google小工具中,它可以正常工作。
<script type="text/javascript" src='https://HOSTNAME/Forms/js/forms-embed.js?v=9.2'>
</script>
<script type="text/javascript">
var lfembed = new LaserficheForms.Form(null /*element to place form in*/,{bpid: '1', host:'https://HOSTNAME/Forms', params:PARAMS, autoheight: false}).getFrm();
lfembed.style.height = "100%";
</script>
问题是我希望能够获取当前登录用户的电子邮件地址,并将其传递到上面代码的params:
部分。
据我所知,您无法在Google小工具中执行此操作。我可以使用下面的Google Apps脚本对象检索当前的电子邮件地址,但我不知道如何让两者协同工作。
function doGet() {
var gauser = Session.getActiveUser().getEmail();
var output = ContentService.createTextOutput(gauser);
return output;
}
另一个问题是,当我尝试将所有代码都包含在Google Apps脚本中时,Google会对部分JavaScript进行清理。
我真的没有太多这方面的经验,所以如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分:0)
我今天了解了JSONP。
我最终通过发布以下Google Apps脚本网络应用来实现这一目标。
function doGet(request) {
var gauser = Session.getActiveUser().getEmail();
return ContentService.createTextOutput(
request.parameters.prefix + '(' + JSON.stringify(gauser) + ')')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}
然后我通过XML小工具中的URL调用了Web应用程序服务
<script src="https://WEBAPPURL?prefix=lfdo"></script>
这会将用户名值放入lfdo
函数中,我将其插入到我需要的参数字符串中。
XML小工具的完整内容部分:
<![CDATA[
<script type="text/javascript" src='https://HOSTNAME/Forms/js/forms-embed.js?v=9.2'></script>
<script type="text/javascript">
function lfdo(gauser) {
console.log(gauser);
var lfembed = new LaserficheForms.Form(null /*element to place form in*/,{bpid: '1', host:'https://HOSTNAME/Forms', params:'Name='+ gauser, autoheight: false}).getFrm();
lfembed.style.height = "100%";
gadgets.window.adjustHeight();
}
</script>
<script src="https://WEBAPPURL?prefix=lfdo"></script>
]]>
Google Developers上的This article让我朝着正确的方向前进。