作ったもの
設定した日にレジュメの提出状況をSlackに晒し、次週の提出先のフォルダを作ります。
Google Apps Scriptの週トリガーを使用して自動化しています。
自分のフォルダのみを作成して、レジュメを提出していない状況も見られましたのでそれにも対応しています。
個人情報のため、名前とURLの一部は伏せさせていただきます。
作った経緯
私が所属しているゼミの課題の1つで毎週、レジュメを提出しています。
提出先は、Google Driveに提出期限が記載された日付のフォルダ(例えば"20180629"みたいな)に
自分の名前のフォルダーを作り、提出しています。
しかし、提出率が悪いという状況が続いていました。
ゼミでは、ツールとしてSlackとGoogle Driveを使用していました。
Slack × Google Driveを合わせてどうにかできないかを考えた時に簡単に実装できそうなGoogle Apps Scriptを知りました。
同じようなことをされている方もいらしゃったのでGoogle Apps Scriptで作ってみました。
作り方
こちらの記事を参考にさせていただきました。
GoogleAppsScriptで特定のDriveフォルダにあるファイル更新情報をSlackで通知する
SlackのWebhook URLを取得方法をこちらです。
SlackのWebhook URL取得手順
Google DriveのFolder IDの取得方法はこちらです。
基本中の基本!GASでGoogleドライブのファイル・フォルダをIDで取得する
function sendToSlack(body, channel) {
var url = "SlackのWebhook URL";
var data = {
"channel" : channel,
"username" : "レジュメ警察",
"text" : body,
"icon_emoji" : "設定したい絵文字"
};
var payload = JSON.stringify(data);
var options = {
"method" : "POST",
"contentType" : "application/json",
"payload" : payload
};
var response = UrlFetchApp.fetch(url, options);
}
function createFolder(url) {
var folder = DriveApp.getFolderById(url);
var today = new Date();
today.setDate(today.getDate() + 7);
var foldername = Utilities.formatDate(today, "Asia/Tokyo", "yyyyMMdd");
var newfolder = folder.createFolder(foldername);
}
function updateFolder() {
var flg;
var folderURL = '監視したいGoogle DriveのフォルダID';
var folderID = DriveApp.getFolderById(folderURL).getFolders().next().getId();
var folder = DriveApp.getFolderById(folderID);
var files = folder.getFolders();
var array = new Array{};
var compDate = new Date();
createFolder(folderURL);
compDate.setDate(compDate.getDate() - 7);
while (files.hasNext()) {
var file = files.next();
var lastUpdateDate = file.getLastUpdated();
var fileObject = file.getFiles().hasNext();
if(lastUpdateDate > compDate) {
if(fileObject == true) {
array.push("【"+ file.getName() +"】" + "最終更新:" + Utilities.formatDate(lastUpdateDate, "Asia/Tokyo", "yyyy/MM/dd HH:mm"));
array.push("URL:" + file.getUrl());
} else {
array.push("【"+ file.getName() +"】" + "フォルダーの中身がありません。")
array.shift()
}
}
flg = array.slice(array.length - 2, array.length);
}
sendToSlack("ここ1週間で提出されたレジュメについてお知らせします。\n" + array.join("\n"), "#task");
}
最後に
これを作ったせいなのか、ゼミの友人に見せたら「嫌なものを作ってくれたね」と言われました。
BOT作りは楽しいので良しとしましょう。