我正在为新的Google表格编写一个应用程序,以便将另一个API与Sheets集成。我需要通过打开一个允许用户登录以授权我的应用程序的新窗口来授权用户。
到目前为止,我发现这样做的唯一方法是使用简单的超链接。有没有办法用一个调用后端函数的按钮来做到这一点?当用户点击按钮时,我无法找出可以在新窗口中打开链接的任何内容。
注意:我想这样做是为了与UI保持一致。我需要添加一个"授权"和#34;取消授权"按钮。取消授权按钮只是调用一个函数来从用户帐户中删除访问令牌,但是授权按钮需要打开一个新URL以将用户发送到另一个站点进行登录。
答案 0 :(得分:1)
以下是使用自动打开侧边栏的可能解决方案,如下所示:
以及以下代码:
function onOpen() {
var shUi = SpreadsheetApp.getUi();
var app = UiApp.createApplication().setTitle('Custom functions');
var panel = app.createVerticalPanel().add(app.createHTML('please select an option below').setStyleAttribute('padding','10px'));
var grid = app.createGrid(1,2).setWidth('200');
var dHandler = app.createServerHandler('removeAuth');
var b1 = app.createButton("Authorize");
var b2 = app.createButton("De-authorize",dHandler).setTitle('remove authorization');
var link = app.createAnchor('XXXXX','http://www.google.com').setStyleAttributes({'zIndex':'1' , 'position':'fixed' , 'top':'45' , 'left':'20', 'color':'transparent' }).setTitle('proceed in a new tab');
var G1 = app.createVerticalPanel().add(b1).add(link);
grid.setWidget(0,0,G1).setWidget(0,1,b2);
app.add(panel).add(grid)
shUi.showSidebar(app);
}
function removeAuth(){
// some code
}
答案 1 :(得分:0)
在Apps-script中,您无法通过按钮点击事件打开新标签页,但这可以通过 锚。因此,创建一个锚点并使用要在新选项卡中打开的链接设置Href。要获得Button感觉,您可以使用background-image属性为锚点设置StyleAttribute。
var anchor1 = app.createAnchor('Authorize','http://www.google.com')
.setStyleAttribute('backgroundImage','url('tree.png')');