2012-05-18 13 views
7

私は約30,000文字のJSONを取得する簡単なスクリプトを持っています。私はJSON.parse()またはUtilities.jsonParse();google appsスクリプトUrlFetchApp.fetchの制限事項

function refresh() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    sheet.clear(); 


    var text = UrlFetchApp.fetch("http://blablah/json"); 

    Logger.log(text.getContentText()); 

    //error SyntaxError: Unexpected token: F (line 12) 
    json = JSON.parse(text); 
) 

ロガーだけJSONの約59行を示してそれを解析しようとすると、

は私がSyntaxError: Unexpected token: F (line 12)を得るが、私は、ロガーは、スペースの制限を持っていると言われた - しかし、私は」それはそれほど確かではありません。

JSON.parseは自分のサーバー上で実行されているため、jQuery get()も同様にデータを解析します。

私はUrlFetchApp.fetch()が長いファイルを取得できないと思っていますか?

受け入れることと、私はそれについてはマニュアルを参照していませんしました:(

+1

行に「Logger.log(text.getContentText()。length);」という行を追加します。実際にフェッチされた文字の数を決定します。 –

+1

それはすべてのデータを持っていると仮定してみませんか?私は多くのデータをキャプチャするためにUrlFetchを使用しましたが、30Kはうまくいくはずです。 Utilities.jsonParse()を使用するだけです。エラーが出ますか?エリックの推薦も素晴らしいです。 – mzimmerman

+1

@mzimmerman 'JSON.parse'は' Utilities.jsonParse'よりも推奨されています。私は今の違いを覚えていないが、Googleフォーラムの検索でそれを見つけるべきだ。 –

答えて

4

あなたは新しいAppsスクリプトdashboardにUrlFetchのと他のサービスの制限を確認することができます。私の経験からハード、Logger.logは、はるかにタイトを持っていますLogger.logがそれを表示しておらず、他の問題が発生している可能性があります。getContentText結果を別の場所、たとえばスプレッドシートのセルに配置してみてください。または、それを分割し、for-loopでlogger logを呼び出します。

あなたが直面している可能性のあるエラー(クォータの制限に加えて)は、文字エンコーディングです。getContentTextには、ページのエンコーディングを知らせるオプションのパラメータがあります。

+2

私が答えを見つけるのを助けたので、これを答えとしてマークしています。はいLogger.log(text.getContentText()。length)spit put 30k chars、そしてそれを行セルに入れることは、すべてを持っていました。秘密はvalue = text.getContentText();を実行していました。 JSON.parse(value)を実行します – Vigrond

+0

確かに!どのように我々はそれを逃したのですか? :) –

関連する問題