前回の投稿から1年以上が開いてしまいました。
今年はアウトプットを頑張る年にしたい、ということで何か手元で書いたら投稿する習慣をつけたいと思います。(本業は人事ですが。)
さて、基本的に業務で利用するのはGoogleAppsScriptしか書かないので、最近書いたものを投稿します。
弊社ではG Suite(旧 Google Apps for Work)を利用していますが、結構Spreadsheetが増えてきています。
組織の成長過渡期ということもあり、これから専用のシステムが色々と導入されていくことになると思いますが、しばらくはSpreadsheetで管理するものはある程度残りそう。
数が少なければよいのですが、増えてくると都度更新されているか見に行くと大変なので、特定のDriveフォルダの週次で更新されたSpreadsheetをチェックしにいくSlackbotを作りました。
今更ながら初めてSlackのbot作りましたが、とても手軽で色々利用の幅が広げられそうだなーと思いました。
Google Apps Script
Slackへの投稿メソッド
Webhookの利用方法とかはこちらの記事とかに書いてあります。
http://qiita.com/vmmhypervisor/items/18c99624a84df8b31008
function sendToSlack(body, channel) {
var url = "https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXX";
var data = { "channel" : channel, "username" : "hogehoge-name", "text" : body, "icon_emoji" : ":exclamation:" };
var payload = JSON.stringify(data);
var options = {
"method" : "POST",
"contentType" : "application/json",
"payload" : payload
};
var response = UrlFetchApp.fetch(url, options);
}
特定のDriveフォルダをチェックして直近一週間の更新情報を取得するメソッド
function updateMissionSheetList() {
var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
var files = folder.getFiles()
var array = new Array{};
//一週間前のの日付取得
var compDate = new Date();
compDate.setDate(compDate.getDate() - 7);
while (files.hasNext()) {
var file = files.next();
//日付をキーにして、直近タスクを配列へセットする
var lastUpdateDate = file.getLastUpdated();
if(lastUpdateDate > compDate) {
array.push("【"+ file.getName() +"】" + "最終更新:" + Utilities.formatDate(lastUpdateDate, "Asia/Tokyo", "yyyy/MM/dd HH:mm"));
array.push("URL:" + file.getUrl());
}
}
sendToSlack("ここ1週間で更新があったSpreadsheetをお知らせします。\n" + array.join("\n"), "#hogehoge-channel")
}
あとはこれらをトリガー登録して週次実行させればこんな感じでSlackに通知されます。
今年は頑張って定期的に書いてみようと思います。ではまたー。
エンジニアの方にお会いしたいです
弊社では、フロントエンドからバックエンド、インフラまで全域でアドテクやりたいエンジニアの方を募集しています!
ちょっと話聞かせろやくらい感じで遊びに来てくれたら嬉しいです!
【株式会社ジーニー】
https://www.wantedly.com/companies/geniee-co