TrelloのWebhookをGoogle Apps Script(GAS)で使おうと思ったら一癖あったのでメモ。
curl等でTrelloのWebhookの宛先にGASを指定すると公開設定を全員にしていても以下のようなメッセージが返ってきます。
URL (https://script.google.com/macros/s/XXXXXXXXXX/exec) did not return 200 status code, got 403
先に登録方法だけ書くと、GASで「アクセスできるユーザー」を「自分のみ」の状態でTrelloのWebhookを登録し、その後「全員」に変更します。
理屈は以下引用の様にTrelloのWebhook登録時にTrelloからGASへHTTPのHEADリクエストが発行され、ステータスコード200を返したときのみ登録されるという仕様です。
The provided callbackURL must be a valid URL during the creation of the webhook. We run a quick HTTP HEAD request on the URL, and if a 200 status code is not returned in the response, then the webhook will not be created.
https://developer.atlassian.com/cloud/trello/guides/rest-api/webhooks/
しかしGASは公開設定を「全員」にしてもHEADリクエストには403を返してしまう様なのです。そこで回避策として一旦公開設定を「自分のみ」にすることで、GASは認証画面を表示するようになります。この状態だとGASはHEADリクエストに200を返してくれるので登録できるという訳です。
参考 How to create webhook from Google Apps Script using the “exec” url rather than “dev” url. Exec returns 403 Errorstackoverflow.com