【发布时间】:2019-02-11 06:23:34
【问题描述】:
我正在使用 Google App Script 和 Google Spreadsheet 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() 从其他域时,它会记录登录的用户。
这背后的原因是什么?跨域用户是否有任何解决方法?
【问题讨论】:
-
“不在我在论坛上找到的跨域记录电子邮件 ID”是什么意思,什么论坛?而且在您的第二次观察中,您说它登录了用户,那么问题是什么?是记录还是不记录电子邮件ID?是的,它只会获取登录用户。如果要获取已授权脚本的用户,请使用 getEffectiveUser()。请解释我提到的上述几点。
-
@ShyamKansagra:在 StackOverflow 和link 上。假设我的域是 abc.com,客户域是 xyz.com,那么功能在 abc.com 上运行良好。意味着当我使用 poonam@abc.com 登录时,它会将用户名记录在“登录详细信息”工作表中。但是,如果我使用 client@xyz.com 登录,那么我会得到空白用户名。根据每秒观察,当我使用 client@xyz.com 登录并打开脚本编辑器并运行 onOpen 然后它将电子邮件 ID 记录为 client@xyz.com 但直接打开电子表格时不会。
-
可能是因为您一定忘记在 client@xyz.com 上设置触发器 ....请检查您是否在域中设置了 onOpen() 触发器,那么您必须同样设置也可以在客户端 ID 上触发,触发器不会与代码一起复制。
-
@ShyamKansagra:我已经在 client@xyz.com 上设置了触发器,但问题仍然存在。但通常 onOpen() 是一个简单的触发器,它会在用户打开谷歌电子表格时自动设置。
-
你能分享你的工作表吗?另外,您是否从 catch 部分获取任何日志?
标签: google-apps-script google-sheets cross-domain