对于经验丰富的开发人员来说,这对您来说很有帮助。我尝试使用Google Apps脚本服务来获取我的Google网站的登录用户的用户名。我可以让电子邮件显示正常,但是当我尝试使用substring方法缩短用户名时,我得到了跟随错误。
TypeError:无法在对象email@email.com中找到函数子字符串。 (第4行,文件" getusername")
我理解为什么我会收到此错误但不确定如何修复它。以下是我的代码
function doGet() {
var userEmail = Session.getEffectiveUser();
var username = userEmail.substring(0, userEmail.indexOf("@"));
var HTMLString= "<body> <h2> Logged in as " + userEmail +",</h2></body>";
HTMLOutput = HtmlService.createHtmlOutput(HTMLString);
return HTMLOutput
}
我猜测因为变量userEmail
是动态的,具体取决于登录用户,变量username
在执行之前无法看到电子邮件地址?
非常感谢任何帮助。
在这里完成Javascript新手。
由于
杰克
答案 0 :(得分:1)
变化:
var userEmail = Session.getEffectiveUser();
为:
var userEmail = Session.getEffectiveUser().getEmail();
如果你看一下Session.getEffectiveUser()
的文档,你就会看到&#34;返回&#34;是。很长一段时间我都没有太注意它。但是,您需要始终知道返回的内容。一些返回类型是:字符串,或对象,或整数,或类。根据返回的内容,这将决定您可以进一步做什么。很多初学者都注意到事物之间有一段时间,并且能够发现他们需要用一段时间来拼凑东西。但他们真的不知道那个时期是什么。那个时期被称为点运算符,每个地方都有一个&#34;点运算符&#34;基本上是一个过程中的另一个步骤。你&#34; chaining&#34;多个操作在一起。在代码中:Session.getEffectiveUser().getEmail()
有两个句点(点运算符)和两个单独的事物发生,每个都有不同的返回值。 getEmail()
方法返回一个字符串。文档指出getEffectiveUser()
返回&#34;用户&#34;但是如果你去&#34; User&#34;的文档。你会把它描述为&#34; Class&#34;。要了解什么是&#34; Class&#34;是的,你需要做一些研究。