我正在尝试拨打Session.getActiveUser
,以便在编辑其他字段时自动填充Google表格文档中的某些字段。所有用户都在同一个域中;但是,我收到一条错误消息,"You do not have permission to call getActiveUser."
我在现有文档的印象下,同一域内的用户可以通过自定义脚本访问彼此的信息 - 这是不正确的?如果是这样,我知道有几种解决方法,但如果没有,是否还有其他一些我可能做错了?
提前致谢!
答案 0 :(得分:1)
" user3889423"是正确的,你需要授权用户,以便调用getActiveUser()。
您可以在以下链接中找到此信息: https://developers.google.com/apps-script/guides/sheets/functions#advanced
答案 1 :(得分:0)
如果该脚本在没有用户明确授权的情况下运行,您将无法获得ActiveUser(我认为)。当用户首先授权脚本时,它应该工作。
答案 2 :(得分:0)
The link in KRR's answer contains the information you need。这是摘录回答你的问题:
Session.getActiveUser()
:如果您的自定义函数抛出错误消息
You do not have permission to call X service.
,则该服务需要用户授权,因此无法在自定义函数中使用。
Session.getActiveUser()
(直接在单元格中)。您需要创建自定义菜单:要使用上述服务以外的服务,请创建一个运行Apps Script功能的自定义菜单,而不是编写自定义功能。从菜单触发的功能将在必要时要求用户进行授权,因此可以使用所有Apps脚本服务。
答案 3 :(得分:-1)
我对Google Apps脚本和Java相当陌生,但设法实现了上面讨论的内容。下面的代码将使用当前用户的用户名填充活动工作表的单元格A1。
我真正想要做的是,打开单元格A1,而无需用户单击自定义菜单。有没有人对如何实现这一点有任何想法?
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Custom Menu')
.addItem('Get Username', 'getuser')
.addToUi();
}
function getuser()
{
var gotuser = Session.getActiveUser().getEmail();
//run the line below to output to stackdriver logging
console.log(gotuser);
//SpreadsheetApp.getUi().alert(gotuser);
SpreadsheetApp.getActiveSpreadsheet().getRange('A1').activate().setValue(gotuser);
}