!!HEAD UP!!
記事を書いてから1年以上経っているので Slack API が変更してる場合があります。短いコードですのでもし間違いがあった場合でも適宜修正してお使いください。
Slack でファイルをアップロードしようとしたらファイルの容量が限界だと言われたときに Slack からファイルを消す方法についてのメモです。
Your team is over its storage limit.
Please upgrade to a paid tier or delete some larger files.
ファイルを消せる権限があるか確認
まずは自分が適用な権限をもつか確認するために Slack の files.list APIのtester を実行してみてください。ファイルの削除が成功すると以下のログが出力されます。このときに表示される file オブジェクトの一番上の ID 名を覚えておいてください。
Slack API レスポンス:
{
"ok": true,
"files": [
{
"id": "XXXXXXXXX",
~ 略 ~
次に Slack の files.delete の file
の値に先ほど取得した ID を入力して実行してください。以下のログのようになれば成功です。それ以外のログが出た場合は files.delete ページのエラーメッセージの説明を読んで対処してください。
Slack API レスポンス:
{
"ok": true
}
ファイルを削除するスクリプトを実行
# This code is taken from Santiago'blog below
# https://www.shiftedup.com/2014/11/13/how-to-bulk-remove-files-from-slack
import requests
import json
import calendar
from datetime import datetime, timedelta
_token = "YOUR TOKEN GOES HERE"
_domain = "YOUR SUB DOMAIN HERE"
if __name__ == '__main__':
while 1:
files_list_url = 'https://slack.com/api/files.list'
date = str(calendar.timegm((datetime.now() + timedelta(-30))
.utctimetuple()))
data = {"token": _token, "ts_to": date}
response = requests.post(files_list_url, data = data)
if len(response.json()["files"]) == 0:
break
for f in response.json()["files"]:
print "Deleting file " + f["name"] + "..."
timestamp = str(calendar.timegm(datetime.now().utctimetuple()))
delete_url = "https://" + _domain + ".slack.com/api/files.delete?t=" + timestamp
requests.post(delete_url, data = {
"token": _token,
"file": f["id"],
"set_active": "true",
"_attempts": "1"})
print "DONE!"
1. Slack API ページからトークンを取得
2. 上記の python スクリプトを slack.py として保存
3. コード内の変数 _token
値に先ほど取得したトークンを追加
4. python がなければ python 追加
5. requests をインストール
pip インストール:
$ curl -KL https://bootstrap.pypa.io/get-pip.py | python
Warning: error trying read config from the 'L' file
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1487k 100 1487k 0 0 4289k 0 --:--:-- --:--:-- --:--:-- 4298k
Collecting pip
Using cached pip-8.1.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-8.1.1
pip バージョン確認:
$ pip -V
pip 8.1.1 from /path/to/python2.7/site-packages (python 2.7)
pip で requests をインストール:
$ pip install requests
Collecting requests
Downloading requests-2.10.0-py2.py3-none-any.whl (506kB)
100% |████████████████████████████████| 512kB 1.2MB/s
Installing collected packages: requests
Successfully installed requests-2.10.0
/path/to/python2.7/site-packages
に requests がるか確認:
$ cd /path/to/python2.7/site-packages
$ ls | grep requests
requests
requests-2.10.0.dist-info
6. python slack.py
で実行