我已经使用Google App脚本创建了一个联系人类型表单,并已发布为Web App。
由于我需要确定填写表单的用户是唯一的,因此我使用了getTemporaryActiveUserKey()函数来获取用户唯一的密钥,并将其与其余表单数据一起保存到电子表格中。
但是,现在在许多实例中,脚本为多个不同的用户返回了相同的密钥。我知道这些用户实际上使用不同的浏览器,并且位于完全不同的位置。
我的问题是,这怎么可能?
下面是code.gs中的函数,该函数在提交表单时运行,以检索该值
function postFormDataToSheet(form){
var responseSheet = SSDoc.getSheetByName("Results");
var time = new Date()
var userKey = Session.getTemporaryActiveUserKey();
var resultRow = [time,form.user_name, form.user_email, form.sheet,userKey]
responseSheet.appendRow(resultRow);
}
HTML表单中的JavaScript函数,当按下提交按钮时,将调用上述函数
$(function(){
$('#submitButton').on('click', function(){
google.script.run.withSuccessHandler(SuccessPage).postFormDataToSheet(this.form);
})
})
使用以下设置发布Webapp
Execute the app as: Me (myemailaddress)
Who has access to the app: Anyone, even anonymous
答案 0 :(得分:1)
经过大量研究并尝试了各种情况,我确定了以下内容:
基于上述观点,我认为getTemporaryActiveUserKey()函数根本不应该为未登录的用户返回任何值,因为在非唯一用户不可见的情况下,我看不到此类键有任何用处用户。
答案 1 :(得分:-1)
您的Web应用已获得权限"Execute the app as me"的部署,这意味着脚本始终随您执行。
摘自Session.getTemporaryActiveUserKey()
的文档:
获取活动用户唯一的临时密钥,但不显示用户身份。临时密钥每30天旋转一次,并且对于脚本而言是唯一的。
由于它基于活动用户,因此每次都会获得相同的结果,因为对于Google Apps脚本,您是网络应用脚本的唯一活动用户,尽管谁请求该脚本。
如果您希望能够为不同的用户获得不同的值,则需要通过使用Web应用程序权限设置“以用户访问Web应用程序的身份执行应用程序”来确保用户获得授权