2017-06-28 30 views
2

GoogleスプレッドシートとOAuth 1.0で1つのサービスをリンクするアプリがあります。GoogleスプレッドシートでURLからパラメータを取得

アドオンメニューで「ログイン」をクリックし、署名とコールバックドメイン(現在のシート)を送信します。それからサービスで私はボタンをクリックし、リクエストトークンを取得し、パラメータを使って指定されたドメインに私を返します。

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

ただし、.getUrl()には含まれません。

>this<によれば、私はdoGet(e)をスプレッドシートに使用できません.OAuthのた​​めに、これらのパラメータをスプレッドシートに渡す必要があるため、Webアプリケーションを使用できません。

私はクライアント側でwindow.top.location.hrefで取得しようとしましたが、ドメイン間のエラーがありました。

質問:私はそれを入手できますか?それとも不可能なのでしょうか?

+1

参照してください質問にSergei Insasによって[回答](https://stackoverflow.com/a/25690127/1595451)を参照してください。 –

+1

[Google独自のURLからのGoogleスプレッドシートの読み取りパラメータ](https://stackoverflow.com/questions/25687592/google-spreadsheet-reading-parameters-from-its-own-url)の可能な複製 –

+0

@ Ruben、私は既にこの質問に言及しています。これはOAuthを提供する(Web Appを持っているなら)OAuthを提供し、WebアプリケーションがSheetsを知らず、そこに書き込むことができないため、Web Appを通じて問題を解決しません。 – FLighter

答えて

0

私の質問に対する部分的な答え:

2つの異なるスクリプトが必要です。 Sheets Webアドオンとしては1番目、Web Appとしては2番目。次に、我々はスクリーンショットに提示されたすべてのステップを実装する必要があります。 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パラメータを取得してスプレッドシートのウェブアドオン(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.今私はメニューの変更に問題がありますが、それは私の次の質問です。

関連する問題