我'使用谷歌应用程序脚本和谷歌电子表格的OnOpen()触发。我锁定登录的用户在谷歌电子表格。
对于相同的限制是它没有登录跨域电子邮件ID,我在论坛上找到。
下面是相同的代码:
function onOpen(e)
{
try
{
var ui = SpreadsheetApp.getUi();
ui.createMenu('Action')
.addItem('Add Data', 'addData')
.addToUi()
var sheet =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Login Details");
sheet.appendRow([Session.getActiveUser().getEmail(),new Date()]);
}
catch(e)
{
Logger.log(e);
}
}
从的OnOpen()功能的一个观察:
1]我的电子表格的所有者,它只是记录我们的公司域名的电子邮件ID。 (自动电子表格的OnOpen())
2]从当我打开电子表格的有界脚本和运行的OnOpen()其他域然后它记录登录的用户。
什么是背后的原因相同,是有用户跨域什么解决办法?
我认为Session.getActiveUser().getEmail()
具有与外域的OnOpen触发问题时,这个人是不是主人。
此外,自动每分钟触发也无法登录活动的用户。
这里的解决方法:
添加菜单中的电子表格本身,与点击它时,将运行功能追加所需的行的选项。正如,当我们从脚本手动运行功能Session.getActiveUser().getEmail()
工作。
使用此代码:
function addMenu()
{
var ui = SpreadsheetApp.getUi();
ui.createMenu('Log user')
.addItem('Run script', 'appendRow')
.addToUi()
}
还可以添加这个功能:
function appendRow()
{
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YOUR_SHEET").appendRow([Session.getActiveUser().getEmail(),new Date()]);
}
现在,只要你想登录活动用户,请转到该用户的身份登录,然后点击运行脚本,它会追加行。
另外,不要忘记设置的OnOpen触发addMenu()在客户端的功能,甚至你的身边。
有关详细信息,我们可以看到这一点:Class session