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

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

ただいまの
回答率

90.49%

  • Google Apps Script

    1324questions

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

  • Slack

    235questions

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

GASでSlackBotを作りたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 951

negi_0919

score 12

 前提

初質問です よろしくお願いします
非エンジニアがカップル専用アプリ「Slack」でGAS製Bot運用してみた WebツールSlackBotGoogleドライブGAS Published:2016.01.15Last updated:2017.01.27 というブログを参考にSlackで使える言葉遊び(?)botを
Google Apps Scriptで 作ろうと思っていたのですが
予想以上に扱いが難しいのでこちらで質問させていただく事にしました

GASの扱いは慣れてはいませんがある程度知識はあるつもりです

 実現したいこと

Slackで「よお」と言われたら名前が"negibot"の「✋(◉ ω ◉`)よお」と返すbotを作りたい

 発生している問題

全く応答しない

 該当のソースコード

function doPost(e) {
 ///Slack
  // スクリプトのプロパティから各tokenを取得
  var prop = PropertiesService.getScriptProperties().getProperties();
  var bot_name = "nebibot"; // Botの名前
 var bot_icon ="(アイコンURL)"; //Botのアイコン

  // tokenが一致しなかったらエラー
  if (prop.VERIFY_TOKEN != e.parameter.token) {
    throw new Error("invalid token.");
  }

  /* 帰ってくる値はこんな感じ
  token=5oz5Ei0XJcGvZznPJUDnbctoken=5oz5Ei0XJcGvZznPJUDnbcyy
  team_id=T0001
  team_domain=example
  channel_id=C2147483705
  channel_name=test
  timestamp=1355517523.000005
  user_id=U2147483697
  user_name=Steve
  text=googlebot: What is the air-speed velocity of an unladen swallow?
  trigger_word=googlebot:
  */

  var app = SlackApp.create(prop.SLACK_ACCESS_TOKEN);

  var text = e.parameter.text; // 発言を取得
  var channel = e.parameter.channel_id; // Channnelを取得

  // あいさつは大事!
  if(text.match(/よお/)){
    var message = "@" + e.parameter.user_name + "✋(◉ ω ◉`)よお";
    app.postMessage(channel, message, {
    username: bot_name,
    icon_url: bot_icon
  });
  }
}
}

 補足情報

SLACK_ACCESS_TOKENはプロパティで追加済みです

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

いくつか気になりましたので、確認させてください。

  1. 別途フォームやWEB AppからのPOST送信がトリガーになっているということでよろしいですね?(doPost(e)より)
  2. 「スクリプトのプロパティ」に「VERIFY_TOKEN」及び「SLACK_ACCESS_TOKEN」というキーでそれぞれ値が登録されているということですね?
  3. 最後のif文中、icon_url: bot_iconとなっていますがbot_iconは未定義ですよね。エラーは出てないのでしょうか?

その他、Slack側のことはわかりませんが、GAS側でエラーとかは出ていませんか?

ちなみにですが、var message = "@" + e.parameter.user_name + "✋(◉ ω ◉`)よお";となっていますが、特定ユーザーへのメンションは「<@userID>」形式に移行されるようです。

[参考]
Slack BOTを使ってSpreadsheetの変更通知を送る

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/19 08:02

    1について
    Slackから送られてきたメッセージ(POST送信)で反応させようと思っているので
    一応大丈夫だと思います(知識不足でよく分かりませんでした..申し訳ないです)

    2について
    確認したところ、確かに設定を忘れていました(したつもりになってました)
    ただ、トリガーに追加して再度試したのですが状態は前と変わってないです..

    3について
    実際のURLを貼っていたためURL部分のみ削除しようと思っていたのですが、定義そのものまで削除してしまってました 投稿を修正しました

    GASからは何も吐かれていない状態です
    Slackも反応する気配すらない状態です..

    メンションについて
    そうだったんですね それは初耳でした
    ありがとうございます 参考にさせていただきます

    色々試してみましたが、状態は前と同じでうんともすんとも言わないです..
    何が原因なんでしょうかね.. 回答ありがとうございました 参考になりました

    キャンセル

  • 2018/03/19 08:49

    となると、そもそもGAS側でPOSTデータを受け取っているか、ということですよね。
    更には処理が正常に実行されているのか確認する必要がありますね。
    例えば、Logger.log()でe.parameter.tokenを確認、もしくは実行トランスクリプトを確認してみてください。

    キャンセル

  • 2018/03/19 16:57

    Logger.log()で確認したところ、POSTデータは取得できていたのですが
    他で書いたコードが影響していたようです おかげさまで解決できました
    分かりやすい説明ありがとうございました

    キャンセル

  • 2018/03/19 17:20

    何よりです。
    後学者のためにも、公開できる範囲で何が影響していたのか提示したほうが良いですよ。

    キャンセル

+1

SLACK_ACCESS_TOKENはプロパティで追加済みです

とありますが、プロパティで VERIFY_TOKEN は登録していますか?
SlackでOutgoing WebHooksを設定した際の「Token」を VERIFY_TOKEN として登録してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/19 07:56

    プロパティを再度確認したところ、確かに'VERIFY_TOKEN'が抜けていました
    が、トークンをトリガーに追加したのですが、
    前と現象は変わらずエラーを全く吐かないまま反応もしない状態になっています
    何が原因なのでしょうか.. もう少し色々いじってみます..
    回答ありがとうございました

    キャンセル

  • 2018/03/19 16:57

    おかげさまで解決する事ができました
    ありがとうございました!

    キャンセル

同じタグがついた質問を見る

  • Google Apps Script

    1324questions

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

  • Slack

    235questions

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