我使用Google App脚本和Google电子表格onopen()触发器。我正在锁定在Google电子表格中登录的用户。
限制的限制是,它没有在我在论坛上找到的跨域上记录电子邮件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()
在该人不是所有者时在外部域上触发触发问题。
此外,每分钟自动触发器也无法记录活动用户。
这是解决方法:
在电子表格本身中添加菜单,并带有一个选项,当单击时,将运行该功能以附加所需的行。AS,当我们从脚本手动运行功能时,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()]);
}
现在,只要您要记录活动用户,请转到日志用户,然后单击运行脚本,它将附加行。
另外,不要忘记为 addmenu()函数设置onopen触发触发器。
有关更多详细信息,我们可以阅读以下内容:class session