質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

1回答

36375閲覧

UrlFetchApp.fetchがエラーになる。

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

1クリップ

投稿2018/04/09 07:32

Slack botをGoogle App Scriptsで作成しています。
下記のようにurlを取得してbotからメッセージを投稿しているのですが、1日に10回ほど動かしただけで

** リクエストに失敗しました(エラー: 400)。サーバー応答の一部: invalid_payload(応答の全文を見るには muteHttpExceptions オプションを使用してください)**
というエラーが表示されます。
1日の制限に引っかかっているのでしょうか?
まだ容量制限がある場合、どの程度まで使えるのでしょうか。
もし詳しい方がおりましたら教えていただけると助かります・・

lang

1function postSlackTest(text) 2{ 3 var url = "https://hooks.slack.com/services/XXXXXXXXXXXXX"; 4 var options = 5 { 6 "method" : "POST", 7 "headers": {"Content-type": "application/json"}, 8 "payload" : '{"text":"' + "テスト" + '"}', 9 }; 10 UrlFetchApp.fetch(url, options); 11}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1

リクエストに失敗しました(エラー: 400)。サーバー応答の一部: invalid_payload

以下を参照下さい。

HTTP 400 Bad Request

invalid_payload typically indicates that received request is malformed — perhaps the JSON is structured incorrectly, or the message text is not properly escaped. The request should not be retried without correction.

https://api.slack.com/incoming-webhooks

2

(応答の全文を見るには muteHttpExceptions オプションを使用してください)

とあるように、muteHttpExceptionsオプションを有効にしてエラーの詳細を確認してみることをお勧めします。

3

まだ容量制限がある場合、どの程度まで使えるのでしょうか。

以下を参照下さい。

4

curl -X POST --data-urlencode "payload={\"channel\": \"#general\", \"username\": \"webhookbot\", \"text\": \"これは webhookbot という名のボットから #general に投稿されています。\", \"icon_emoji\": \":ghost:\"}" https://hooks.slack.com/services/XXXXXXXXXXXXXX

問題を切り分けるために、まずはcurlでPost出来ないかを確認してみて下さい。「XXXXXXXXXXXXXX」の部分をご自身の値に変更して下さい。(#general宛にpostされるはずです)

5

公式ドキュメントに載っていたコードなので、送信するオプションの指定の参考にしてください。
JSONのところがとりあえず、怪しい気がします。

// Make a POST request with a JSON payload. var data = { 'name': 'Bob Smith', 'age': 35, 'pets': ['fido', 'fluffy'] }; var options = { 'method' : 'post', 'contentType': 'application/json', // Convert the JavaScript object to a JSON string. 'payload' : JSON.stringify(data) }; UrlFetchApp.fetch('https://httpbin.org/post', options);

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app?hl=fr-FR#fetch

投稿2018/04/09 07:43

編集2018/04/09 09:21
HayatoKamono

総合スコア2415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/09 08:43

ご丁寧に教えていただきありがとうございます! 1 は''' "payload": JSON.stringify({text: "テスト"}) '''として実行してみましたが、同じエラー内容が吐かれました。おそらく制限に引っかかったと思われます。 2ですが、"muteHttpExceptions": true,を追加してみたところエラーが出なくなりました。ただSlackにメッセージがポストされるでもなく、何が起きたか・どうして動かないのかわかりません。デバッグマークを押しても動かないのですが、これは追加で処理が必要なのでしょうか?たくさん質問してしまい申し訳ありません・・ 3 容量制限の詳細がわかり助かりました!ただ1日に数回しかテストしていないので、どうしてこの容量に引っかかるのかどうしてもピンときません・・詳しくないのでこちらは勉強あるのみですが・・精進いたします。
退会済みユーザー

退会済みユーザー

2018/04/09 10:50

回答ありがとうございます。try~catchを試してみても今のところ反応がないのでもう少し模索してみます!curlも試したところポスト自体は成功しました!Scripts側の問題かもしれませんのでもう少し調査してみます。丁寧に教えていただき助かりました!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問