2011-11-08 18 views
1

以下のダミーコードでは、一般にGoogleのAPIの例から3つの機能があります.2つはAPIによって必須で、もう1つはRunMe()です。スプレッドシートリクエストが無効な場合は、handleQueryResponse()関数から返されるエラーメッセージにアクセスできます。しかし私の目的のためには、runMe()関数内からresponse.isError()が存在するかどうかをテストする必要があります。これは単純なようですが、handleQueryResponse()の外部からその応答オブジェクトを取得することはできません。これは私のJavaScript初心者の状態や、APIが何か奇妙なことをしている可能性があります。Google Visualization APIの応答ステータスへのアクセス

私はまた、それがコンソールのコメントを解除するのが奇妙だと思っています。 getTableMeta()関数で実際のクエリの表現ではなく、プロトタイプのように見える "Er"オブジェクトが生成されます。

ありがとうございます。

下記のスプレッドシートIDは、最後に「z」が付いていて無効であり、削除されて有効です。

function runMe() { 
    var foo = getTableMeta('0AtP_YtDJ532RdDcxZUl6Zkl4YkxKcEYzbld4ZDA4SlEz'); 
    // console.log(response); 
    // console.log(response.getMessage()); 
    // console.log(foo.getMessage()); 
} 


// Get table metadata from Google 
function getTableMeta(spreadsheet_id) { 

    var query = new google.visualization.Query('https://spreadsheets.google.com/a/google.com/tq?key=' + spreadsheet_id); 
    // console.log(query); 
    query.send(handleQueryResponse); 
    }  


function handleQueryResponse(response) { 
    if (response.isError()) { 
     // alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage() + '. Please click Previous and enter a different spreadsheet ID.'); 
     console.log(response.getMessage()); 
    }  
    return response; 
} 

runMe(); 

API reference

答えて

1

残念ながら、あなたはrunMe()関数内で値を取得することができなくなります。これは、トリガーする呼び出しが非同期であるためです。あなたのケースでは、指定されたコールバック関数によって応答が処理される要求を単に送信します。handleQueryResponse

私は単にトリガーとしてrunMeを見ます。その機能に含めるロジックが何であれ、代わりにhandleQueryResponseに取り組んでください。

希望に役立ちます。私が何かを誤解してしまったら、もっと文脈を提供してください。

+0

ありがとうOli - それはたくさん説明します:)これはウィザードのUIになると私は最初のステップで検証することを望んでいたが、私はそれのための別のUIを考え出す必要があるように聞こえます。感謝。 – shacker

関連する問題