LoginSignup
30
23

More than 3 years have passed since last update.

【GAS】リクエストに失敗しました。応答の全文を見るには muteHttpExceptions オプションを使用してください。

Posted at

Google Apps Script Advent Calendar 2020 6日目

もうとっくに過ぎてしまった日付の Advent Calendar ですが、空いているのも偲びないので投稿することにしました。どうぞよろしくお願いいたします。

はじめに

今日も今日とて Google Apps Script で API を呼び出していたのですが、タイトルのエラーメッセージが表示されました。( ゚Д゚)

今まではこのメッセージが表示されていても、割と無視して無理やりなんとか解決していたのですが、やっぱりエラーにちゃんと向き合って解決しよう!と思い、調べたので忘れないように書いておくことにしました。

インプット後のアウトプット大事。(*´Д`)

muteHttpExceptions オプション

UrlFetchApp.fetch() メソッドには muteHttpExceptions オプションというものがあり、これを true に指定しておくとエラーを吐かずに HttpResponse を返してくれます。
なので、帰ってきた HttpResponse の中身を見ればどんなエラーか詳細にわかるということですね。(*'▽')

でも、ただオプションを設定するだけではダメです。( ゚Д゚)
例外が発生する可能性もあるので、ちゃんと try ~ catch をしておきます。

以下のように記述します。

main.gs
function apiRequest() {
  const uri = 'https//.......'
  const options = {
    'method': 'get',
    'headers': headers,
    "muteHttpExceptions" : true,
    "validateHttpsCertificates" : false,
    "followRedirects" : false
  }
  try {
    const res = UrlFetchApp.fetch(uri, options);
    Logger.log(res)
  } catch(e) {
    // 例外エラー処理
    Logger.log('Error:')
    Logger.log(e)
  }
}

これでエラー応答の全文を見ることができます。
エラー内容をしっかりと把握して、修正が行えますね!('Д')

細かいところ

  • validateHttpsCertificates

SSL 証明書のエラーを回避します。
処理が止まらなくなるだけでエラーがなくなるわけではありません。
ログを見て証明書の有効性を確認しましょう。

  • followRedirects

エラーが出た際、サイトが指定するリダイレクト先の URL を取得します。
false に設定しておくと取得することができます。

おわりに

ここまでお付き合いいただきありがとうございました。

エラー処理、大事ですよね。
個人開発ばっかりやってるせいで、エラーが出たらログ見ればいいや的な感覚なのですが、あまり良くないと思っています。

エラーが発生した場合に担当者に通知する流れとか、処理を止めない動きとか、意識できるように勉強&実践あるのみですね。

ではまた!(^^)/

参考にさせていただきましたm(_ _)m

Google Apps Script 公式ドキュメント - Class UrlFetchApp
Google Apps ScriptでWebAPIや外部サイトを取得する指南書

30
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
23