kokokoko05
@kokokoko05

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Slack】apps scriptで投稿とスレッドへ通知を送りたい

現状

・現在Googleフォームの回答時にSlackへ通知が来るようにしている
・項目が41個あり、そのすべての項目が通知されるためチャンネル表面の視覚的なノイズある

解決したいこと

回答の1,2問はチャンネル表面に表示され、残りの項目はスレッド内に表示させたい

現在のソースコード

function onFormSubmit(event) {


var message = "<!here> " + event.response.getRespondentEmail() + "\n";

var items = event.response.getItemResponses();

for (var i = 0; i < items.length; i++) {

message += items[i].getItem().getTitle() + ": " + items[i].getResponse() + "\n";

}

UrlFetchApp.fetch(

// Webhook URLを入れる

"https://hooks.slack.com/services",

{

"method" : "POST",

"contentType" : "application/json",

"payload" : JSON.stringify({"text": message})

}

);

}

自分で試したこと

コードを検索し、調べましたが、似ている事案の投稿がありませんでした。
そのため、こちらで質問させていただきました。

表面投稿とスレッド投稿をはできるのでしょうか。
また、その際のコード等教えていただけますと幸いです。。。

0

1Answer

ちょっとコード書いてみましたが、こんな感じのを参考にできますか?

function onFormSubmit(event) {
  var token = 'xoxb-your-token'; // Slack bot token
  var channelID = 'your-channel-id'; // The ID of your channel

  var items = event.response.getItemResponses();
  
  var mainMessage = "<!here> " + event.response.getRespondentEmail() + "\n";
  
  for (var i = 0; i < 2; i++) {
    mainMessage += items[i].getItem().getTitle() + ": " + items[i].getResponse() + "\n";
  }
  
  // Post the first two responses to the channel
  var response = UrlFetchApp.fetch(
    'https://slack.com/api/chat.postMessage',
    {
      'method': 'POST',
      'headers': {'Authorization': 'Bearer ' + token},
      'contentType': 'application/json',
      'payload': JSON.stringify({
        'channel': channelID,
        'text': mainMessage,
      }),
    }
  );
  
  var threadTs = JSON.parse(response.getContentText()).ts;
  
  var threadMessage = '';

  for (var i = 2; i < items.length; i++) {
    threadMessage += items[i].getItem().getTitle() + ": " + items[i].getResponse() + "\n";
  }
  
  // Post the remaining responses to the thread
  UrlFetchApp.fetch(
    'https://slack.com/api/chat.postMessage',
    {
      'method': 'POST',
      'headers': {'Authorization': 'Bearer ' + token},
      'contentType': 'application/json',
      'payload': JSON.stringify({
        'channel': channelID,
        'text': threadMessage,
        'thread_ts': threadTs,
      }),
    }
  );
}
1Like

Comments

  1. @kokokoko05

    Questioner

    凄過ぎます・・・!
    これも元に作成したら無事できました。。。!!
    ありがとうございます!!

  2. 良かったです!いいねもらえると嬉しいです^^ノ

Your answer might help someone💌