Slackで特定のチャンネルのログを、1日1回スプレッドシートに保存しています。
下記で問題なく動作しているのですが、取得したtextのログにあるメンションがメンバーIDになってしまいます。
(例@hogehogeが@Uxxxxxxのような数字とアルファベットに変わる)
slack上でみると、ちゃんとusernameになっています。
スプレッドシートで確認する際にメンバーIDだと名前が分からず困っています。
UNIXタイムスタンプを見やすく変換できるので可能だと思うのですが、うまくいきません。
宜しくお願い致します。
function getSlackLog() { var requestUrl = 'https://slack.com/api/channels.history?'; var payload = { // Slack Token 'token': 'xxxxxxxxxxx', // Channel ID 'channel': 'xxxxx', // 25時間分のメッセージ取得 'oldest': parseInt( new Date() / 1000 ) - (60 * 60 * 40) } // パラメータの設定 var param = []; for (var key in payload) { param.push(key + '=' + payload[key]); } requestUrl += param.join('&'); return UrlFetchApp.fetch(requestUrl); } // 取得したSlackのメッセージをスプレッドシートに保存 function setSlackLog() { // Slackのメッセージを取得して逆順に var response = JSON.parse(getSlackLog()); Logger.log(response); messages = response.messages.reverse(); // スプレッドシートの情報取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var lastrow = sheet.getLastRow(); // メッセージをシートに書き込む for ( var i = 0; i < messages.length; i++ ){ // 日付 sheet.getRange(lastrow + i + 1, 1).setValue(convertTimestamp(messages[i].ts)); // 内容 sheet.getRange(lastrow + i + 1, 2).setValue(messages[i].text); // リンクがあればリンクURL if (messages[i].attachments) { sheet.getRange(lastrow + i + 1, 3).setValue(messages[i].attachments[0].title + String.fromCharCode(10) + response[i].attachments[0].title_link); } } } // UNIXタイムスタンプを変換 function convertTimestamp(timestamp) { var date_format = function(num) { return ( num < 10 ) ? '0' + num : num; }; var d = new Date(timestamp * 1000); var date = d.getFullYear() + '/'; date += date_format( d.getMonth() + 1 ) + '/'; date += date_format( d.getDate() ) + ' '; date += date_format( d.getHours() ) + ':' + date_format( d.getMinutes() ); return date; }

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