AutoScale では、metabase の API から売上などのデータをGoogle Apps Script(GAS)で、定期的に取得してスプレッドシートに保存しています。
2020/12/11頃からその処理が急に動かなくなったので原因を調査・解決しました。
発生していたソースコード
UrlFetchApp.fetch(url, params)
発生していた例外
予期しないエラー: URL Unexpected error: URL
原因
なんとGoogle 側のバグ!
Google のイシュートラッカーに起票済み。 みんなKPIが更新されなくて阿鼻叫喚になってるw
暫定対応
URLを変えていろいろ試したみた結果、レスポンスのContent-type が application/json
のものは例外を投げないが、 text/css
のものは例外となっているようでした。
対処
metabase のAPIで、取得形式をcsvからjsonに変えたら治った。
その他調べたことのメモ
以下のページにはcontent-typeによって例外を投げるということは特に書いてない
以下のページにも、最近のリリースでUrlFetchApp.fetchの仕様が変わったようなことは書いてない。
Release Notes | Apps Script | Google Developers
GASの「UrlFetchApp.fetch」、仕様変更した?
— ふち(・3・) (@fucchie3) 2020年12月14日
Content-Type: application/octet-streamで出力していたCSVデータを受け取ると「予期しないエラー」になっていたので、Content-Type: text/htmlにして<html></html>のタグで囲んで出力したらようやく取得できたのだが。。。#GoogleAppsScript