結論を最初に
- trelloのwebhookとして、GASでサーバーを公開するときには、以下のステップで
- 最初(Webhook登録する時)は、認証付きの権限
- doPost、doGetにアクセスさせたい時は、全体公開の権限で。
- このときに、「新しいデプロイ」ではなく、「デプロイの管理」から権限だけ変更すること。
きっかけ
- trelloのボードで,doneになったときにいろんな処理をさせてみたくなった
- Slackに通知とか
- irucaくん打刻とか
- 詳細を書き出すと長くなってしまったので、この記事はハマったところのみ記載することとする。
webhookに登録するURLを公開(限定公開)
webhookに登録する
-
全体公開となってる場合は以下のエラーが出る。限定公開とすること。
- 「"message":"URL (https://script.google.com/macros/s/xxxxxx/exec) did not return 200 status code, got 403","error":"ERROR"」
- 「"message":"URL (https://script.google.com/macros/s/xxxxxx/exec) did not return 200 status code, got 403","error":"ERROR"」
-
Tips:リクエスト時に、「'muteHttpExceptions' : true」を渡しておくとレスポンスのログを省略しないので便利です。
function createWebhook(){
var requestUrl = 'https://api.trello.com/1/tokens/' + trelloToken + '/webhooks/?key=' + trelloKey;
var options = {
'method' : 'post',
'headers': {'ContentType': 'application/json'},
'payload' : {
'description': 'Webhook of Trello',
'callbackURL': callbackUrl,
'idModel': boardId
},
'muteHttpExceptions' : true
}
Logger.log(UrlFetchApp.fetch(requestUrl, options));
}
trello webhookの用のURLの権限を変更する(全体公開)
その他の自分用反省・ノウハウ
- リリース時にWebhookのdelete/createを投げられる仕組みを作っておくと良さそう。
- 新しいデプロイ(限定公開)
- delete もとのwebhookid/ create あたらしいURL みたいな処理
- デプロイ管理から権限を変更