3

このエラーが発生します:継続をシリアル化すると予期しない例外が発生します(あまり役に立ちません)

FetchUrlApp.fetch()が原因です。電話。Googleスプレッドシートではなく、サイト用のGoogleAppsScriptを使用しています。コードは元のインスタンスで機能しますが、コードをコピーして新しいプロジェクトに貼り付けるとすぐに、上記のエラーメッセージが表示されます。GoogleDocsAPIにアクセスしています。他のフォーラムで認証が必要であることを読みましたが、コードが機能するための適切な認証を取得できませんでした。コードのコピーを初めて実行したときに、プロンプトがポップアップすることはありません。

コードの行使:

var oauthConfig = UrlFetchApp.addOAuthService("docs");
oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope=https://docs.google.com/feeds/");
oauthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
oauthConfig.setConsumerKey(_consumerKey_);
oauthConfig.setConsumerSecret(_consumerSecret_);

var requestData3 = {
  "method": "GET",
  "headers": {"GData-Version": "3.0"},
  "oAuthServiceName": "docs",
  "oAuthUseToken": "always",
};

var url = "https://docs.google.com/feeds/" + userName + "/private/full/-/mine"; 
var result = UrlFetchApp.fetch(url, requestData3); //error occurs, any thoughts?

よろしくお願いします、ジェームズ・クリム

4

2 に答える 2

0

私が提案するのは、Oauthプロセスを呼び出し、スクリプトエディターから一度呼び出すだけの特別な関数を作成することです。例として、承認ポップアップを表示するために最近使用したものを次に示します。

function authorize(){
    // function to call from the script editor to authorize googleOauth
    var id=mailtemplatedoc
      var url = 'https://docs.google.com/feeds/';
      var doc = UrlFetchApp.fetch(url+'download/documents/Export?  exportFormat=html&format=html&id='+id,
 googleOAuth_('docs',url)).getContentText();  
    }

編集:そして私が忘れていた欠けている部分:

function googleOAuth_(name,scope) {
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oAuthConfig.setConsumerKey('anonymous');
  oAuthConfig.setConsumerSecret('anonymous');
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}
于 2012-06-08T18:33:59.773 に答える
0

3本足のOAuthプロセスをトリガーするには、consumerKeyとconsumerSecretの両方を「匿名」に設定する必要があります。

oauthConfig.setConsumerKey("anonymous");
oauthConfig.setConsumerSecret("anonymous");

2行をこれらに置き換えると、承認ポップアップダイアログが表示され、ユーザーがドキュメントへのアクセスを許可できるようになります。

于 2012-06-08T20:39:04.073 に答える