JavaScript
Node.js
Slack

Slackの絵文字(emoji)を一括エクスポート&インポートする

More than 1 year has passed since last update.

Slackの所属チームが増えてきたりすると、他チームで使っているemojiが欲しくなったり、まとめてemojiを移行したくなったりすることはよくあります。いろいろ調べてみると素敵なツールが公開されていたので、今回はそれらを使ったemojiの一括インポート&エクスポートする手順をまとめました。

※Windows10で動作確認済み。


更新履歴

2018/01/12: .png 以外の拡張子のemojiもエクスポートできるようにスクリプトを修正 (@daik さん、ありがとうございます!)


現在のチームのemojiをエクスポート

こちらの記事を参考に進めます。

Qiita: Slackのカスタム絵文字を全てダウンロードする


1. Node.jsをインストール

インストール後、 node --version コマンドで動作確認できます。

今回は下記バージョンを使いました。

λ node --version

v6.10.0


2. 必要なモジュールをインストール

λ npm install slack-node

λ npm install request
λ npm install fs


3. エクスポート元のSlackチームのAPIトークンを取得

ここ でAPIトークンを発行する。

20170322_slack-api-token.png


4. スクリプトファイルを配置

メモ帳やらに下記をコピペして、 "<apitoken>" の部分に発行したAPIトークンを貼り付ける。

その後 slack-emoji-export.js という名前で保存(何でも良い)。


var Slack = require('slack-node');
var request = require('request');
var fs = require('fs');

apiToken = "<apitoken>"; // ここにAPIトークンを貼り付ける。
slack = new Slack(apiToken);

slack.api("emoji.list", function (err, response) {
for(key in response.emoji){
url = response.emoji[key];
//エイリアスは無視
if(url.match(/alias/)){
continue;
}

// 取得対象の拡張子
extention = url.match(/\.[^\.]+$/);

request
.get(url)
.on('response', function (res) {
})
.pipe(fs.createWriteStream('image/' + key + extention));
}
});


5. 保存先ディレクトリを作成する

slack-emoji-export.js を配置した同階層に image というディレクトリを作成する。


6. 実行

コマンドプロンプトからスクリプトを実行する。

C:\Users\emoji-export>node slack-emoji-export.js


7. 完了

imageディレクトリにカスタム絵文字が保存されているはず。


emojiを一括インポート

GoogleChromeのエクステンション、 Slack Emoji Tools を使う。

こちらの記事を参考。

Hatena Blog: Slack Emoji (絵文字) を一括登録できるツールが素敵すぎました


導入後、UIから一括登録できるようになる

20170322_slack-emoji-bulk.png

チームのemoji追加画面 (https://チーム.slack.com/customize/emoji) に行くと、一括登録できるようになっている。

ファイル名がそのままemojiの名前になる。


おわり

おかげでとっても楽に移行できました。各作者様に感謝。