2017-06-28 68 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.現在我遇到了更改菜單的問題,但這將是我的下一個問題。

相關問題