目的:GASとChatworkのWebhookの連携
Google App Script(GAS)とChatworkのWebhookを使って、
以下の処理をしたいのですが、失敗してしまいます。
- Chatwork上でメッセージを送る
- GAS上で、送信されたメッセージを検出
- 送信メッセージがトリガーとなって、「doPost(e)」が実行される
問題:「doPost(e)」がメッセージに反応しない
GAS上で「ウェブ アプリケーションとして導入」して、
アプリケーションのURLと「ルームID」等をWebhookを設定したが、
Chatwork上にメッセージを送っても、「doPost(e)」が反応してくれない。
(設定画面の画像はこの投稿の下部に貼り付けています。)
ソースコード
下記のURLを参考にしてWebhookをテストしています。
https://tonari-it.com/gas-chatwork-webhook-omikuji/
javascript
1var API_TOKEN = 'xxxxxxAPIトークンxxxxxx'; //チャットワークAPIトークン 2 3function doPost(e) { 4 var json = JSON.parse(e.postData.contents); 5 /* リクエスト用パラメータ・URLの準備 */ 6 var params = { 7 headers : {"X-ChatWorkToken" : API_TOKEN}, 8 method : "post" 9 }; 10 11 var roomId = json.webhook_event.room_id; 12 url = "https://api.chatwork.com/v2/rooms/" + roomId + "/messages"; 13 14 /* json内に「おみくじ」メッセージがあればチャットワークに送信 */ 15 if(json.webhook_event.body === "おみくじ"){ 16 17 var accountId = json.webhook_event.account_id; 18 var messageId = json.webhook_event.message_id; 19 20 var body = '' 21 body += '[rp aid=' + accountId; 22 body += ' to=' + roomId + '-' + messageId + '] ' 23 body += '[info]おみくじの結果:' + generateOmikuji() + '[/info]' 24 params.payload = {body :body}; 25 26 UrlFetchApp.fetch(url, params); 27 } 28}
試したこと
手動でスクリプトを実行する形のものだと、
Chatwork上のメッセージを検出して、
アウトプットを再度チャットに送信できるのですが、
「doPost(e)」を使用すると、GASが反応していないように思います。
その他にウェブアプリケーションのバージョンを上げてみたり、
新しいGASのファイルで導入をしてみたりしたのですが、
全く反応なしです。。。
補足情報
回答1件
あなたの回答
tips
プレビュー