Google 应用脚本的 Session.getActiveUser() 不适用于跨域用户



我使用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

相关内容

  • 没有找到相关文章

最新更新