谷歌应用程序脚本的Session.getActiveUser()不工作的跨域用户

问题描述 投票:1回答:1

我'使用谷歌应用程序脚本和谷歌电子表格的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()其他域然后它记录登录的用户。

什么是背后的原因相同,是有用户跨域什么解决办法?

google-apps-script google-sheets cross-domain
1个回答
0
投票

我认为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

© www.soinside.com 2019 - 2024. All rights reserved.