11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

Slack の Workspace は気軽に作成できる反面、個人用、家族用、....等様々存在する誤家庭も少なくないと思います。
それぞれの設定はもちろん大変ですが、今回挙げる emoji が特に面倒です。
Import は Google Chrome の拡張に任せればすぐ終わりますが、 export はそうも行きません。
また過去書かれた記事は、仕様変更等で動かなくなってしまったものも多く、記事にまとめることにしました。

Slack emoji を export する

今回実施する内容は以下です

  • 準備
    • Slack app 作成
    • Node.js の実行環境用意
  • 実行

準備

Slack app を作成する

今回 emoji 情報の取得のみ行うことができる Slack app を作成します。
必要は権限は emoji:read のみです。
面倒な方は ⇩ JSON をコピーして Slack app を作成してください

{
  "display_information": {
    "name": "Emoji export"
  },
  "features": {
    "bot_user": {
      "display_name": "Emoji export",
      "always_online": false
    }
  },
  "oauth_config": {
    "scopes": {
      "bot": ["emoji:read"]
    }
  },
  "settings": {
    "org_deploy_enabled": false,
    "socket_mode_enabled": false,
    "token_rotation_enabled": false
  }
}

後のステップで API_TOKEN を利用します。
Token を発行し安全な場所に控えておいてください。

Node.js の実行環境用意

今回は Node.js で export する定義を書きました。
実行環境に Node.js を install している、 yarn の実行も可能である前提で記載します。設定が終わってない方は設定してください。

cd path/to/emoji-export && cd path/to/emoji-expor
npm init -y

今回依存する npm package を install します。

yarn add image-downloader dotenv @slack/web-api

.evn ファイルに先ほど作成した Slack app の API_TOKEN を記載します

.env
API_TOKEN=xoxb-xxxx-xxxx-xxxx

index.js に Slack emoji を export するコード記載します。

今回は path/to/emoji-expor/images 以下に emoji ファイルを書き出します。また、 alias として登録されている emoji は無視しています。

index.js
"use strict"

require("dotenv").config()

const { WebClient } = require("@slack/web-api")
const download = require("image-downloader")

const apiToken = process.env.API_TOKEN
const web = new WebClient(apiToken)

web.emoji.list().then((res) => {
  // Response sample
  //
  // {
  //  ok: true,
  //  emoji: {
  //    sample: 'https://emoji.slack-edge.com/xxx/sample/f3ec6f2bb0.png',
  //    'サンプル': 'alias:sample',
  //    sample2: 'https://emoji.slack-edge.com/xxx/sample 2/6535867372d3b644.png'
  //  },
  //  cache_ts: '1668865194.021600',
  //  response_metadata: { scopes: [ 'emoji:read' ], acceptedScopes: [ 'emoji:read' ] }
  //}
  Object.keys(res.emoji).forEach((key) => {
    const fileUrl = res.emoji[key]
    if (fileUrl.startsWith("alias:")) {
      return
    }

    const fileName = key + fileUrl.match(/\.(\w+)$/)[0]
    download.image({
      url: fileUrl,
      dest: `${process.cwd()}/images/${fileName}`,
      extractFilename: false,
    })
  })
})

実行

それでは作成した Script を実行します。

yarn node index.js

images directory 以下に emoji が保存されていれば成功です。

References

11
5
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
11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?