Google Apps Script Advent Calendar 2020 6日目
もうとっくに過ぎてしまった日付の Advent Calendar ですが、空いているのも偲びないので投稿することにしました。どうぞよろしくお願いいたします。
はじめに
今日も今日とて Google Apps Script で API を呼び出していたのですが、タイトルのエラーメッセージが表示されました。( ゚Д゚)
今まではこのメッセージが表示されていても、割と無視して無理やりなんとか解決していたのですが、やっぱりエラーにちゃんと向き合って解決しよう!と思い、調べたので忘れないように書いておくことにしました。
インプット後のアウトプット大事。(*´Д`)
muteHttpExceptions オプション
UrlFetchApp.fetch()
メソッドには muteHttpExceptions
オプションというものがあり、これを true
に指定しておくとエラーを吐かずに HttpResponse
を返してくれます。
なので、帰ってきた HttpResponse
の中身を見ればどんなエラーか詳細にわかるということですね。(*'▽')
でも、ただオプションを設定するだけではダメです。( ゚Д゚)
例外が発生する可能性もあるので、ちゃんと try ~ catch
をしておきます。
以下のように記述します。
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や外部サイトを取得する指南書