slack通知する際にCSVなどのファイルを送信したいことがあると思います。
ファイル送信は、slack側でちょっとめんどくさい設定が必要ですが、10分程度で準備はできるので、サクッとやり方を説明します。
Contents
ファイル送信に必要なslack側の準備
以下の手順でslack側の設定をします。
- slackにHubotアプリをインストール
- HubotのAPIトークンを取得
- 対象のチャンネルにHubotを追加
- チャンネルIDを取得
1個ずつ解説していきます。
1. 対象のチャンネルにHubotアプリをインストール
1-1. ファイルを送信したいslackのチャンネルを指定し、右クリック→「チャンネル詳細を開く」を押下します。
1-2. チャンネル詳細のポップアップで、「インテグレーション」タブを選択し、「アプリを追加する」を押下します。
1-3. アプリを追加する画面で、「Hubot」と検索し、インストールを押下します。
1-4. ブラウザに遷移するので、「Salckに追加」を押下
2. HubotのAPIトークンを取得
2-1. 1-4を実施すると以下の画面に遷移するので、表示されているAPIトークンを取得。
2-2. 画面下部の「インテグレーションを追加」を押下
2-3. ここまで実施すると、slackの左側のブレードのAppにHubotが追加される。
3. 対象のslackチャンネルにHubotを追加
3-1. コメント記載フィールドの「+」を押下
3-2. 「ショートカットを検索する」という入力フィールに、「アプリを追加」と入力し、「このチャンネルにアプリを追加する」を押下
3-3. 1.2で作成したHubotを追加
ここまで実施すると、対象のチャンネルにHubotが追加されます。
4. チャンネルIDを取得
続いて、ファイルを送信するslackチャンネルのIDを取得します。ファイルを送信するチャンネルを特定するために必要な情報です。(おそらく)
対象のチャンネルを右クリックして、「チャンネル詳細を開く」を押下します。チャンネル詳細の「チャンネル情報」の下部にチャンネルIDが表示されているのでこちらを保存しておきます。
pythonでファイルを送信
必要な情報は揃ったので、pythonでslackにファイルを送信したいと思います。
前提として必要な情報は、以下の2つです。
- HubotのAPIトークン
- ファイルを送信するslackチャンネルのID
slackerというモジュールが必要なので、なければインストールしてください。
pip install slacker
サンプルコード
from slacker import Slacker API_TOKEN = "xoxb-xxxx" SLACK_CHANNEL_ID = "xxxxxxxx" file_name = "test.csv" slacker = Slacker(API_TOKEN) slacker.files.upload(file_=file_name, channels=SLACK_CHANNEL_ID)
これでslackに以下のようにファイルが届きました。以上で、完了です。