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

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

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

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

Slack

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

Q&A

解決済

2回答

2470閲覧

GASでslackApp.postMessageを使ってslackに投稿する際に引用形式で投稿したい

TaichiNakajima

総合スコア10

Google Apps Script

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

Slack

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

0グッド

0クリップ

投稿2019/09/13 06:58

【背景】

やりたかったこと
0. SlackのスラッシュコマンドからSlack上でフォームを立ち上げる

  1. フォームにSlack上で項目を記載し、送信する
  2. 送信内容がGoogle Spread Sheetに項目別に列に格納される(1送信が1行に対応)
  3. 送信した内容が引用 "slack"の形式で同チャンネルに投稿される

【問題】

4番目ができない。
文字列で前後に【"```"】を追加してみたり、【>>>】を追加してみたが
通常投稿になってしまいます。

イメージ説明

【現状】
コード

【理想】

GAS

1コード

Q.どのようにすればSlackApp.postMessageによって引用形式の投稿をできますでしょうか?

参考

【スクリプトエディタの内容】

※中盤の下記が該当部分かと思います。
//↓フォーム記入後にslackに戻すときのフォーマット

GAS

1// code url https://script.google.com/a/fout.jp/macros/s/AKfycbyWVoSwpVNu_d8EvRURI7ZKidI5ZN04j3wi7vb7YA/exec 2// verification token sLogrAWlKA2dlyaAItU7NhVM 3 4// OAuth Access Token xoxp-2257153818-339451421059-744610860802-70c34fa755e4b1a40800a3545a83aa02 5 6var channelName = 'kansai_gijiroku' //コマンドを使用するチャンネル名。適宜編集してください。プライベートチャンネルは選択できないみたい。 7 8var token = PropertiesService.getScriptProperties().getProperty('OAuth_token'); 9var slackApp = SlackApp.create(token); 10var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 11 12 13function doPost(e) { 14 //GASのプロパティストアに登録したVerification Token 15 var verified_token = PropertiesService.getScriptProperties().getProperty('verified_token'); 16 var verificationToken = e.parameter.token || JSON.parse(e.parameter.payload).token || null; 17 if (verificationToken !== verified_token) { // AppのVerification 18 console.log(e); 19 return ContentService.createTextOutput(); 20 } 21 22 if (e.parameter.command === '/gijigiji' && e.parameter.channel_name !== channelName) { 23 console.log(e); 24 //response_typeをephemeralにすることで実行ユーザーにだけ通知される。 25 var rtnjson = {"response_type": "ephemeral","text": "/gijigijiコマンドはred_gijigijiチャンネルでのみ使用可能です"}; 26 return ContentService.createTextOutput(JSON.stringify(rtnjson)).setMimeType(ContentService.MimeType.JSON); 27 } else if (e.parameter.command === '/gijigiji') { 28 29 30 var createdDialog = createDialog(e); 31 var options = { 32 'method' : 'POST', 33 'payload' : createdDialog, 34 }; 35 var slackUrl = "https://slack.com/api/dialog.open"; 36 var response = UrlFetchApp.fetch(slackUrl, options); 37 return ContentService.createTextOutput(); 38 } else { 39 var p = JSON.parse(e.parameter.payload) 40 var postChannel = p.channel.id; 41 var s = p.submission; 42 var free = s.freeText || "なし" 43 44 45 //↓フォーム記入後にslackに戻すときのフォーマット 46 slackApp.postMessage(postChannel, 47 "提案by <@" + p.user.name 48 +" \n【所属】:" + s.team 49 +">\n【記入者】:" + s.ae 50 +"\n【日付】:" + s.date 51 +"\n【代理店(アポ先)】:" + s.agency 52 +"\n【先方参加者】:" + s.client 53 + "\n【FO参加者】:" + s.member 54 +"\n【agenda&goal】" + "\n" + s.agenda 55 + "\n \n【NA】" + "\n" + s.na 56 + "\n \n【結果+memo】" + "\n" +s.memo , 57 {"username" : "gijigijiBOT", "icon_emoji" : ":yomikoala:"}); 58 59 //シートへの記入! 60 61 62 if (s.team === '1局'){ 63 var sheet = spreadsheet.getSheetByName('sales1') 64 sheet.appendRow([s.ae, s.date, s.agency, s.client, s.member , s.agenda , s.na, s.memo]); 65 }else if (s.team === '2局'){ 66 var sheet = spreadsheet.getSheetByName('sales2') 67 sheet.appendRow([s.ae, s.date, s.agency, s.client, s.member , s.agenda , s.na, s.memo]); 68 }else if(s.team === '関西'){ 69 var sheet = spreadsheet.getSheetByName('kansai') 70 sheet.appendRow([s.ae, s.date, s.agency, s.client, s.member , s.agenda , s.na, s.memo]); 71 }; 72 73 74 return ContentService.createTextOutput();//←これが無いとslackのダイアログが閉じない。 75 } 76} 77 78function createDialog(e){ 79 var trigger_id = e.parameter.trigger_id; 80 var token = PropertiesService.getScriptProperties().getProperty('OAuth_token'); 81 var dialog = { 82 "token": token, // OAuth_token 83 "trigger_id": trigger_id, 84 "dialog": JSON.stringify({ 85 "callback_id": "irai_dialog", 86 "title": "議事録入力フォーム", 87 "submit_label": "入力する", 88 "elements": [ 89 { 90   "type": "select", 91  "label":"所属", 92  "name":"team", 93 "options":[ 94 { 95 "label":"1局", 96 "value":"1局" 97 }, 98 { 99 "label":"2局", 100 "value":"2局" 101 }, 102 { 103 "label":"関西", 104 "value":"関西" 105 },] 106   }, 107 {"type": "text", 108 "label": "記入者", 109 "name": "ae", 110   }, 111   { 112   "type": "text", 113  "label": "日付20xx/xx/xx", 114  "name": "date", 115   }, 116 { 117 "type": "text", 118 "label": "代理店(アポ先)", 119 "name": "agency", 120 }, 121 { 122 "type": "text", 123 "label": "先方参加者", 124 "name": "client", 125 }, 126 { 127 "type": "text", 128 "label": "FO参加者", 129 "name": "member", 130 }, 131 { 132 "type": "textarea", 133 "label": "アジェンダ&ゴール", 134 "name": "agenda", 135 "optional": true, 136 }, 137 { 138 "type": "textarea", 139 "label": "NA", 140 "name": "na", 141 "optional": true, 142 }, 143 { 144 "type": "textarea", 145 "label": "memo", 146 "name": "memo", 147 "optional": true 148 } 149 ] 150 }) 151 }; 152 return dialog; 153} 154

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

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

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

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

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

guest

回答2

0

引用形式の投稿をできますでしょうか?

Slack 送信メッセージに書式を設定したいということですね。

送信するメッセージを 次のどちらかの方法でフォーマットして送信してください。

マークダウンを使う

メッセージの書式設定 の書式設定に従ったメッセージを送信したら markdown に応じてフォーマットされます。

具体的には、引用ということであれば、 >>>> ですね。

Message Attachments を設定する

もっと細かくフォーマットを設定するのであれば、こちらが良いでしょう。

Attaching content and links to messages

投稿2019/09/13 23:01

CHERRY

総合スコア25164

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

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

TaichiNakajima

2019/09/15 09:48

ありがとうございます!解決しました!
guest

0

自己解決

回答ありがとうございます。

こちらインラインコードでした。
前後に"```"を入れることでできました!
ありがとうございます。

GAS

1 2 //↓フォーム記入後にslackに戻すときのフォーマット 3 slackApp.postMessage(postChannel, 4 "```" + "提案by <@ " + p.user.name 5 +" \n【所属】:" + s.team 6 +">\n【記入者】:" + s.ae 7 +"\n【日付】:" + s.date 8 +"\n【代理店(アポ先)】:" + s.agency 9 +"\n【先方参加者】:" + s.client 10 + "\n【FO参加者】:" + s.member 11 +"\n【agenda&goal】" + "\n" + s.agenda 12 + "\n \n【NA】" + "\n" + s.na 13 + "\n \n【結果+memo】" + "\n" +s.memo + "```", 14 {"username" : "gijigijiBOT", "icon_emoji" : ":yomikoala:"}); 15 16コード

投稿2019/09/15 09:47

TaichiNakajima

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問