🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Slack

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

17248閲覧

スプレッドシートとslackの連携でエラー400が出てしまいます。

tagg

総合スコア8

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Slack

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2019/10/07 13:04

前提・実現したいこと

Google Apps Scriptを使ってスプレッドシートとslackを連携させようとしています。
スプレッドシートの該当セルをslack上に投稿するといったものです。

発生している問題・エラーメッセージ

function postSlack 実行時に
UrlFetchApp.fetch(url, options);
にて下記エラーが表示されます。

https://hooks.slack.com のリクエストに失敗しました(エラー: 400)。 サーバー応答の一部: missing_text_or_fallback_or_attachments (応答の全文を見るには muteHttpExceptions オプションを使用してください)

該当のソースコード

function postSlack() { var obj = SpreadsheetApp.openById('スプレッドシートのID'); var sheet = obj.getSheetByName('スプレッドシートのシート名'); var range = sheet.getRange('該当セル'); var values = range.getValues(); var text = values; var payload = { 'text' : text, 'username' : '吾輩', 'channel' : 'チャンネル名', 'icon_emoji': ':アイコン:',  }; var options = { 'method' : 'post', 'contentType' : 'application/json', 'payload' : JSON.stringify(payload), }; var url = 'Incoming WebhookのURL'; UrlFetchApp.fetch(url, options); }

試したこと

ネットで色々と探し、
"muteHttpExceptions" : true,
"validateHttpsCertificates" : false,
"followRedirects" : false,
というものを入れたり、try〜catchというのも試してみましたが、slack上には吐き出されませんでした。
また、**「'text':text」の箇所を「'text':'テスト'」**といった形で文字にすると吐き出されました。
GASをかじりたての初心者ですので、試したことがあっているかどうかもわかりかねるのですが、
解決法をご教示いただけると大変助かります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

該当セルではなくA2とかで書いてください。また、例えば何が入るのかデータサンプルを示してください

別回答へのコメントも拝見しましたが、slackはテキスト本文がない、または空白からなるメッセージであるのことを許容しません。

また
getValuesとしていますがこれではobject[][]が取得できてしまいます。
例えばこうしたらどうでしょうか。

javascript

1 var range = sheet.getRange('該当セル'); 2 var values = range.getValue().toString(); 3 var text = values || "empty";

投稿2019/10/08 09:15

papinianus

総合スコア12705

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

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

tagg

2019/10/08 09:49

大変失礼いたしました。 今後該当セルではなく実際のA2等で記載するようにいたします。 また、データサンプルとしては「電話番号」や「10/08」といったものになります。 なお、ご提示いただいた方法で試してみたのですが、無事投稿をすることができました。 本やネットを見ながらの無知で大変恐縮なのですが、解決された原因がわかっておらず、 >object[][]が取得できてしまいます。 こちらはどういう意味だったのでしょうか? 新しく追記いただいた toStringは「文字列に変換」 || "empty"は「valuesか"empty"のどちらかがtrueならばtrue」 というところは理解できました。 ※なお、|| "empty"を無しでやってみたところ、それでも吐き出しされました。 助けていただきありがとうございましたm(_ _)m
papinianus

2019/10/08 23:14

このコードだと日付はもしかしたら意図した表示にならないかも。 疑問点については、getValuesは二次元配列を返すという意図です。例えばB5のような単独セルであっても、1✕1の表と考えて二次元配列が返されます。 これで解決し、またvalueのところのemptyを外しても動作するなら、このJSON.stringifyではオブジェクトや配列を上手く文字列化してくれないのではないかと思います。 蛇足ですが、jsの||はこの記号の左がtruelyだったら左を、左がfalsyだったら右を返すという動作をします。なので、該当セルに何らかの文字が埋まっているなら、間引きした内容がなくても動作するのは想定挙動です。そのセルの内容を消して動作を比べると、emptyがないときのみ質問と同じエラーが発生する、が想定動作であり、この句が解決したい実装上の課題です。
tagg

2019/10/10 09:04

ご回答ありがとうございました。 ご教示いただいた内容を改めて自分でも調べてみて、理解ができました。(おそらく) 実際のコードでご記載いただけて大変助かりました。 ありがとうございました。
guest

0

文字列はOK で、変数にするとNGということは、変数 text の中身が、Slack が認めている値ではないのではないでしょうか?

変数の値は何でしょうか?

変数の中身を確認して、送信する内容がSlack が、要求している書式になっているか確認するとどうなっていますか?

投稿2019/10/07 22:57

CHERRY

総合スコア25216

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

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

tagg

2019/10/08 01:15

ご返答ありがとうございます。 変数の値はスプレッドシートのセルに入っている文字(自分の名前など)になります。 Logger.log(text)でログを見ると、その文字はログには出てきております。 ※すみません、回答になっておりますでしょうか、、、?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問