Unityゲーム開発者ギルドというコミュニティを運営しているんだけど、
無料版で使っているSlackのファイルストレージがギリギリになってた。
Unityギルドについてはこちら -> https://twitter.com/naichilab/status/1061929632037892096
このままじゃファイルアップロードできなくなっちゃうので、古いファイルは自動削除されるようにした。
とりあえず30日以上経過したファイルは問答無用で消していこう。
(Slackのメッセージも今のペースだと2週間たらずで消えちゃうから30日経過したら削除で十分だろうと判断)
GASで下記スクリプトを作成。プロジェクトのプロパティでレガシートークンをセットして1時間トリガーを仕掛けた。
1時間ごとに起動して、30日以上経過したファイルを10件検索&削除。
削除後の反映は最大48時間かかるらしいので様子見〜。
function deleteOldFiles() {
var res = filesList(30, 10);
if(res.files.length == 0){
Logger.log("削除対象ファイルは見つかりませんでした。");
return;
}
res.files.forEach(function(file){
Logger.log("削除します。 ID=" + file.id + ", Size=" + file.size);
filesDelete(file.id)
Utilities.sleep(50);//sleep 50msec
});
}
//ref. https://api.slack.com/methods/files.list
function filesList(days, count){
var params = {
token: PropertiesService.getScriptProperties().getProperty("SLACK_ACCESS_TOKEN"),
ts_to: elapsedDaysToUnixTime(days),
count: count
}
return execute('files.list', params);
}
//ref. https://api.slack.com/methods/files.delete
function filesDelete(id){
var params = {
token: PropertiesService.getScriptProperties().getProperty("SLACK_ACCESS_TOKEN"),
file: id
}
return execute('files.delete', params);
}
function execute(apiName, params){
var options = {
'method': 'POST',
'payload': params
}
var res = UrlFetchApp.fetch('https://slack.com/api/' + apiName,options);
return JSON.parse(res.getContentText());
}
function elapsedDaysToUnixTime(days){
var date = new Date();
var now = Math.floor(date.getTime()/ 1000); // unixtime[sec]
return now - 8.64e4 * days + '' // 8.64e4[sec] = 1[day] 文字列じゃないと動かないので型変換している
}
フォロー&リムーブお気軽に。 #太陽人間 リリース。 #びはんとマルの森 開発中 / https://t.co/rVPi5xE72b 作りました / Unity1週間ゲームジャムも主催してます。京ゆにも遊びに来てね https://t.co/DP0B37VgPI C#/Unity/DB/NW/SC
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント