2017-06-28 69 views
2

我有一款应用,通过OAuth 1.0将一项服务与Google表格关联起来。Google电子表格从网址获取参数

我点击插件菜单中的“登录”,发送签名和回调域(当前表格)。然后在服务中,我点击按钮,获取请求令牌,并使我返回到带有参数的指定域。

function onOpen(e) 
{ 
    Logger.log(SpreadsheetApp.getActiveSpreadsheet().getUrl()); 
    Logger.log(e.source.getUrl()); 
} 

.getUrl()不包含它们。

根据>this<我无法在表格中使用doGet(e),并且由于OAuth,我无法使用Web App,因为我仍然需要将这些参数传递给表格。

我试图通过window.top.location.href得到它在客户端,但有跨域错误。

问题:我可以得到它吗?或者是不可能的?

+1

请参阅谢尔盖·因斯(Sergei Insas)的[回复](https://stackoverflow.com/a/25690127/1595451)上提到的问题。的 –

+1

可能的复制[从自己的网址谷歌电子表格读取参数(https://stackoverflow.com/questions/25687592/google-spreadsheet-reading-parameters-from-its-own-url) –

+0

@鲁本,我已经上面已经提到了这个问题。这并没有解决通过Web App中的问题,因为(如果我有Web应用程序)服务,提供OAuth的,打开它和Web App不知道床单和不能写有 – FLighter

回答

0

所以,我的问题的部分答案:

我们需要2个不同的脚本。第一个作为Sheets Web插件,第二个作为Web App。接下来,我们需要实现的截图展示的所有步骤:) steps 1之后的步骤0,1,2服务提供商应该重定向我们用下面的代码助手脚本(Web App):

function doGet(e) 
{ 
    var token = e.parameter.oauth_token, 
     code  = e.parameter.oauth_verifier, 
     response; 

     if(token && code && Root.setVerificationCode(token, code)) 
      response = "Success"; 
     else 
      response = 'Error'; 

    return HtmlService.createHtmlOutput(response); 
} 

这里我们检索GET参数并将它们发送到表格Web插件(Root)。 点击Resources -> Libraries并添加你的插件作为库。 Root只是一个标识符。

2)表插件代码:

function setVerificationCode(token, code) 
{ 
    var oauth = new OAuth(); 
    if(oauth.getAccessToken(code)) 
    { 
     // change menu here 
     return true; 
    } 
    else 
     return false; 
} 

这些都是你需要实现的OAuth 1.0全步骤。

P.S.现在我遇到了更改菜单的问题,但这将是我的下一个问题。

相关问题