Help us understand the problem. What is going on with this article?

Slackでファイルを削除するBotを作成した

More than 1 year has passed since last update.

経緯

会社で使っているslackのファイル容量がオーバーしそうになった。
調べたら、Slackにアップロードしたファイルは一括削除ができないらしい。
そしたら、どこからともなくGASでSlackのファイルを削除するBotが作れるらしいよというメッセージと共に、URLが送られてきた。

Slackの古くなったファイルを自動で削除してみた
http://lyncs.hateblo.jp/entry/2017/06/04/191421

なんで俺が……と思いながら、GAS(GoogleAppsScript)で1ヶ月経過したファイルを削除するbotを作った。その際にfiles.listではまったので、メモ。

やりたいこと

  • 指定した日数(1ヶ月)、経過したファイルを削除
  • 指定したタイプのファイル以外、削除(今回は、画像とPOSTは残したい)

作業の流れ

だいたい送られてきたページを参考にするとそれらしいものが完成する。
作業の手順を手短にまとめると、

みたいな感じですかね。

ソースコード

作成したソースコード

  • GASで呼ぶメソッド以外はオブジェクトにまとめた
  • ライブラリ使うより、URLで直接API叩いた方が早いらしいので、そのように

【2017/10/29追記】
パラメータにchannelidを指定し忘れるという痛恨のミスが発覚。(↓コメント参照)
修正しておきました。
確認したら会社のSlackも全てのチャンネルが削除対象となっていた模様。(ゝω・)

【201803/18追記】
修正をリモートにpushし忘れていたことが発覚。(↓コメント参照)
遅ればせながらpushしておきました。m(_ _;)m
加えて、全チャンネル削除(channelId指定しない)とした場合でも、 自アカウントが参加していないチャンネルのファイルは削除されない という仕様であることが発覚したので、合わせて報告しておきます。

types

APIドキュメントによると、files.listメソッドで指定できるtypeは、以下の7種類とのこと。(POSTもファイルとして扱われるよ)

  • all - All files
  • spaces - Posts
  • snippets - Snippets
  • images - Image files
  • gdocs - Google docs
  • zips - Zip files
  • pdfs - PDF files

しかし、一見良くわからなかったので、よく使いそうな拡張子のファイルを準備して、指定したオプションでどれが取ってこれるのかをテストした。
用意したのは以下のファイル

形式 拡張子
Excelファイル .xlsx
zipファイル .zip
画像ファイル .jpg .png .gif .bmp
テキストファイル .txt
dumpファイル .sql
pdfファイル .pdf
謎の拡張子 .hoge
SlackのPOST (拡張子無し)

結果

オプション 取得できた拡張子
all 全部
snippets .txt .sql
images .jpg .png .gif
zips .zip
pdfs .pdf
gdocs
spaces SlackのPOST

つまり、「画像以外が削除したい」、みたいな場合は
 1. すべてのファイルを取得
 2. 削除したくないファイルを取得
 3. 1と2の差分をとる
という処理が必要ということが分かった。(.bmpは画像として認識してくれない)

あと、typeオプションを利用して「xlsxは削除するけどdocxは残す」
みたいなことは出来ないということが分かった。

もし、そういう処理がしたいなら「ファイル名から拡張子を取り出して個別に指定する」みたいにすれば出来ると思う。
他に良い方法があれば教えてくださいまし。

yoc
Beer Driven Development
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした