【背景】
やりたかったこと
0. SlackのスラッシュコマンドからSlack上でフォームを立ち上げる
- フォームにSlack上で項目を記載し、送信する
- 送信内容がGoogle Spread Sheetに項目別に列に格納される(1送信が1行に対応)
- 送信した内容が引用 "
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

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/15 09:48