2012-07-30 21 views
11

UrlFetchApp.fetchから例外をキャッチする方法はありますか?UrlFetchApp.fetch例外をキャッチする方法

私は応答コードをチェックするためにresponse.getResponseCode()を使用することができます思ったが、私は、404エラーが発生した場合などのために、スクリプトが継続しないと、あなたがいない理由だけでUrlFetchApp.fetch

答えて

17

編集:このパラメータは、現在documented hereです。

文書化されていない詳細オプション "muteHttpExceptions"を使用すると、200以外のステータスコードが返されたときに例外を無効にし、応答のステータスコードを調べることができます。詳細情報と例はthis issueにあります。

+1

ありがとう、これは私が欲しいものです、Googleはこれを文書化する必要があります。 – louis

+0

ありがとう、私はいつもこの機能について忘れています。 – oshliaer

3

で停止することはできませんよトライキャッチを使用し、catchブロックでエラーを処理

try{ 
    //Your original code, UrlFetch etc 
    } 
    catch(e){ 
    // Logger.log(e); 
    //Handle error e here 
    // Parse e to get the response code 
    } 
+0

迅速な対応をありがとうございます。 例外が発生した場合の応答コードは何ですか? – louis

+0

エラーコードを取得するために解析できるエラー文字列がeで表示されます。 –

6

muteHttpExceptionsのパラメータをUrlFetchApp.fetch()に渡しています。ここで

例(未テスト):何らかの理由で

var payload = {"value": "key"} 
var response = UrlFetchApp.fetch(
      url, 
      { 
       method: "PUT", 
       contentType: "application/json", 
       payload: JSON.stringify(payload), 
       muteHttpExceptions: true, 
      } 
     ); 
var responseCode = response.getResponseCode() 
var responseBody = response.getContentText() 

if (responseCode === 200) { 
    var responseJson = JSON.parse(responseBody) 
    // ... 
} else { 
    Logger.log(Utilities.formatString("Request failed. Expected 200, got %d: %s", responseCode, responseBody)) 
    // ... 
} 

URLが利用できない場合、それはまだあなたので、エラーを投げているように見えます(たとえば、あなたが使用しようとしているサービスがダウンしています)ブロックtry/catchを使用する必要があります。

関連する問題