我在商店中发布了Google Sheet附加组件。但我无法收回用户的电子邮件。
在屏幕上加载app(侧边栏)时,在Code.js,onStartup()上。
function onStartup() {
return Session.getActiveUser().getEmail();
}
在我的客户端javascript上,这是我调用onStartup()的方式。
google.script.run
.withSuccessHandler(
function(ret, scope) {
console.log(">>> user email is: " + ret);
})
.withFailureHandler(
function(msg, scope) {
})
.withUserObject()
.onStartup();
编辑:
如果您正在使用附加组件,请尝试使用getEffectiveUser()。
答案 0 :(得分:3)
这在我的测试中起作用,它最初给我一些问题的原因不明:
示例:https://docs.google.com/spreadsheets/d/1zevasz5XjumO92qOwYIvsqoUPkzyB9EBD27pWH2I5e0/copy
code.gs
function onOpen() {
var ui = SpreadsheetApp.getUi()
var menu = ui.createAddonMenu().addItem('Launch Sidebar', 'sidebar').addToUi();
}
function sidebar(){
var ui = SpreadsheetApp.getUi();
var html = HtmlService.createHtmlOutputFromFile("Sidebar.html")
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle("Sidebar Listbox");
ui.showSidebar(html);
}
function getListItems(){
var activeUser = "Active User";
var effectiveUser = "Effective User";
try{
activeUser = Session.getActiveUser().getEmail();
} catch(err1){
activeUser = err1;
}
try{
effectiveUser = Session.getEffectiveUser().getEmail();
} catch(err2){
effectiveUser = err2;
}
var returnArray = [activeUser,effectiveUser];
return returnArray;
}
Sidebar.html
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<p>
Effective User: <span id="effectiveUser"></span>
</p>
<p>
Active User: <span id="activeUser"></span>
</p>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script>
$(function() { //This function runs automatically when the sidebar is opended
google.script.run.withSuccessHandler(loadListItems).withFailureHandler(fail).getListItems();
});
function loadListItems(returnedData){
$( "#effectiveUser" ).html(returnedData[0]);
$( "#activeUser" ).html(returnedData[1]);
}
function fail(){
//update the field with the id of yourChoice
$( "#effectiveUser").html("<strong> Opps, something went wrong.... </strong>");
}
</script>
答案 1 :(得分:0)
发件人:https://developers.google.com/apps-script/reference/base/session#getactiveuser
...在任何允许以下情况的情况下,用户的电子邮件地址不可用 无需用户授权即可运行的脚本,就像一个简单的脚本 onOpen(e), onEdit(e)触发器,是Google表格中的自定义功能,或者 部署到“以我的身份执行” (即由 开发人员而不是用户)
.getEffectiveUser()
确实是更好的选择,尤其是在涉及自定义功能的情况下。