LoginSignup
7
0

More than 3 years have passed since last update.

【Slack】レガシーテストトークンを使わずに絵文字を一括でエクスポートする

Last updated at Posted at 2020-05-13

はじめに(対処した問題)

Slackの新しいワークスペースを作成するに伴い,現在使用しているワークスペースから絵文字を一括でエクスポート&インポートしようと企てていました.
参考サイトを基にエクスポートしようとしたら,Slackのトークン作成のところで躓きました.

参考にさせていただいたサイト↓
Slackの絵文字(emoji)を一括エクスポート&インポートする

というのも,今まで紹介されているエクスポート方法ではSlackのレガシートークンが使われているものが主でした.
しかし,2020/5/5にレガシーテストトークンが作れなくなりました.(すでに作成されているレガシートークンは使用&再生成できますが,新規作成ができないようになっています.)
The creation of legacy test tokens is deprecated

We're deprecating legacy test tokens and will disallow the creation of new test tokens beginning May 5th, 2020.

2020/5/13現在のSlackで新しいトークンを使用するにはSlackアプリを作成するようにと記述されています.
API トークンの生成と再生成

注意 :レガシーテストトークンを新しく作成することはできなくなりました。Slack API を操作するために新しいトークンが必要な場合は、代わりに Slack アプリを作成してください。

今回はレガシートークンで今まで絵文字をエクスポートしていたものを上記に紹介したSlackアプリで代替することで実現していきます.

手順(一括でエクスポートする)

基本的にはレガシートークンを使用してエクスポートする手順と同様のため,先程も紹介させて頂いた記事(Slackの絵文字(emoji)を一括エクスポート&インポートする)に沿って進めていきます.

  1. Node.jsをインストールする
  2. 必要なモジュールをインストールする
  3. エクスポート元のSlackチームのAPIトークンを取得する(←ここが変わる)
  4. スクリプトファイルを作成する
  5. スクリプトファイルを実行する

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

ターミナルでnode -vを打つことで確認できます.

ターミナル

> node -v

インストールされていればバージョンが表示されます(筆者はv12.16.3).
インストールされてない場合は以下のような記事を参考にインストールしてください.
windows10にNode.jsをインストールする
MacにNode.jsをインストール

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

今回使用するモジュールをインストールします.

ターミナル

> npm install slack-node
> npm install request
> npm install fs

3. エクスポート元のSlackチームのAPIトークンを取得する(←ここが変わる)

ここまでは筆者も順調に進んでいましたが,参考記事にあるようなレガシートークンを発行できないところで詰みました.
そこで今回はSlackアプリを作成することで乗り越えます(他にも良い方法があるかもしれません.)

Slack APIにアクセスし,右上の「Your Apps」をクリックする.
image.png

「Create New App」をクリックして,「App Name」に適当なアプリ名(例:import-emoji)を入れて,「Development Slack Workspace」にエクスポートしたいワークスペースを選択する(ここでエクスポートしたいチャンネルが出ない場合はログインが必要).

作成したらページが遷移するので「Permission」をクリック.

image.png

「Scopes」の「User Token Scopes」の下にある「Add an OAuth Scope」をクリックし,「emoji:read」を選択する("emoji"と入力すると候補で上位に出てくる).
選択すると下図の状態になる.

image.png

ページの上部に進むと先程までグレーでクリックすることができなかった「Install App to Workspace」が緑色になり,インストール可能となっているため,クリックしてインストールする.
(※ここで無料のワークスペースの場合は10個アプリを連携しているとエラーになってしまうので注意)

作成を許可するとトークンが発行されるのでこちらを次の作業のためにコピーして用意しておく.
image.png

これでレガシートークンの代わりとなるトークン作成が終わりました.

4. スクリプトファイルを作成する

VSCodeなどのエディターツールで以下のコードをコピー&ペーストする.(ここは下記サイトにある@kureさんや@ne-peerさんの記事にあるコードを拝借致します.)

参考にさせて頂いたサイト
Slackのカスタム絵文字を全てダウンロードする
Slackの絵文字(emoji)を一括エクスポート&インポートする

ファイル名は自分が認識できれば何でもOKです.(下記のファイル名は例)

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));
    }
});

上記コードにある// ここにAPIトークンを貼り付けるの行にある"<apitoken>"の部分に先程コピーして用意していたトークンを貼り付ける("xoxp-00000~"という形になればOK).

5. ディレクトリを作成し,スクリプトファイルを実行する

スクリプトファイルを作成&保存した階層と同階層にimageというディレクトリを作成する.(これをしないとエラー発生)

ディレクトリ作成後,以下のコマンドを入力することでエクスポートが完了する(imageディレクトリにすべての絵文字が保存されます).

【補足】一括インポート

筆者が確認時点(2020/5/13)では,一括インポートは従来どおりの方法で可能なことが確認できています.

従来どおりの方法

Chomeの拡張機能をインストール
Neutral Face Emoji Tools

上記ツールをインストール後,
Slackで「ワークスペースをカスタマイズ」の「絵文字」のタブに行くとドラック&ドロップで一括で絵文字をインポートできます.

image.png

筆者がインポートに使用しようとしたときには上の画像のように拡張ツールのインポート画面が出てこなくて非常に焦りましたが,適当なカスタム絵文字を1つ追加するだけで上記のような画面が出てきます

おわりに

これで今まで通りSlackのカスタム絵文字を簡単に移行させて使い倒していきましょう.

参考サイト一覧

Slackの絵文字(emoji)を一括エクスポート&インポートする
The creation of legacy test tokens is deprecated
windows10にNode.jsをインストールする
MacにNode.jsをインストール
Slack API
Slackのカスタム絵文字を全てダウンロードする

おすすめの記事

【note】ひとりSlackを2週間運用してみて

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0