コピー完了

記事TOP

会員限定記事

Slackでうごく自動の勤怠管理bot(関西弁)がめっちゃ便利やで!! - 無料【神ツール第二弾】

最終更新日:
公開日:
普段使っているSlackに勤怠管理のbotを追加しませんか?勤怠管理システムがまだない企業は、これを使えば簡易的には管理できるかもしれません。本記事は関西弁バージョンでお届けします。

せやかて◯藤!どんな勤怠管理なんや!?

うちの会社の勤怠管理責任者(bot)の

ハットリさん です。

hattori

※諸々の事情からモザイクをかけております


こんな感じで勤怠管理してくれます!

slackで勤怠管理してくれる様子

「おはよう」や「Good Morning」など、挨拶をすると出勤時刻をGoogleスプレッドシートに自動で記入してくれます。

slackでの表示例

※このような形で勤怠情報が入力されていきます。

もちろん修正や休暇申請もできるという優れものです。
いざという時にはスプレッドシート上で書き換えもできるので安心です。


関西弁のSlack勤怠管理botとは

Google Apps Scriptで書かれたSlack用勤怠管理Botの「みやもとさん」をベースにしています。


Google Apps Scriptってなに?
Googleマップ、Gmail、Googleカレンダー、Google Apps(中略)こうしたGoogle製のサービスのプログラム環境です。
GASはJavaScript互換の本格的なサーバーサイドのスクリプト言語です。
簡単なスクリプトを記述し、Googleのサーバーで実行することで、Googleが提供する各種のサービスを操り、独自のWebアプリを実現できます。
Google Apps Scriptのキホンと使い方


こちらのプログラムは2014年から更新が止まっていて、そのまま説明書(README.md)通りにやっても動かない可能性が高くなっています。

今回はこちらの「みやもとさん」を使えるように動かして、社員に親しみやすいようにメッセージを調整していきます。
(本記事では2016年10月時点で動作するように改造していますので、併せ読みしながら参考にしてください。)
内容は非エンジニア向けのカンタンな内容で構成しましたので、ぜひトライしてみてください!


アドバイス!
基本的にはみやもとさんのREADME.mdの内容通りには進んでいきますが、先述のようにこの通りにやると動かない可能性があるため、細かい部分の確認をする意味で併せ読みしてください。


導入しよう!

プログラム本体の設置

Google Drive でGoogle Apps Script に接続しよう

Google Driveにアクセスしてください。
左上の「新規」というボタンから「その他」を選んで、「アプリを追加」をクリックしましょう。
既に「Google Apps Script」がある場合は、そちらをクリックしてください。

Google Driveの画面1

ポップアップウィンドウが出てくるので、検索バーで「google apps script」と入力し、Enterキーを押しましょう。

Google Driveの画面2

すると、「Google Apps Script」がでてきますので、「+接続」をクリックします。

Google Driveの画面3

無事、接続されればこの画面が出るので「OK」を押しましょう。


プログラムを設置しよう

Google Drive に戻り、もう一度「新規」>「その他」と進みましょう。

先ほどまでなかった「Google Apps Script」が表示されているので、こちらをクリックします。

GASの設定1

クリックすると下のような画面になります。

GASの設定2

なんだかコードらしきものが表示されていますね。
とりあえずプロジェクト名や、gsファイル名などを埋めておきましょう。
今回はプロジェクト名を Miyamoto-san にして、gsファイルを main.gsに変更します。
また、既にデフォルトで書かれているコードも消しておきます。

以上の変更すると下のような画面になります。

GASの設定3


プログラムソースの公開されているページにアクセスしよう

まずはmasuidriveさんが公開しているみやもとさんのmain.gsにアクセスします。

まだGoogle Apps Scriptの画面は閉じないでください。

GASの設定4

アクセスしたら上のコードが表示されるので、 ctrl + Actrl + c で全てコピーしましょう。
(Macの場合は ctrlcommand にしてください)

コピーしたら、Google Apps Script の画面の方に戻って、そのまま ctrl + v でペーストします。

GASの設定5

ペーストするとこのようになります。


プログラムソースを動くように編集しよう

たくさんコードがでてきますが、特に知識は必要ありません。
間違えずに編集しましょう。

91行目〜93行目の修正

var year = parseInt(matches[2]);
var month = parseInt(matches[3]);
var day = parseInt(matches[4]);

このコードを下記のコードに変更します。

var year = parseInt(matches[2]);
var month = parseInt(matches[3].replace(/^0/, ''));
var day = parseInt(matches[4].replace(/^0/, ''));

プログラムの262行目〜281行目をコメントアウト

// サーバに新しいバージョンが無いかチェックする
checkUpdate = function(responder) {
  if(typeof GASProperties === 'undefined') GASProperties = loadGASProperties();
  var current_version = parseFloat(new GASProperties().get('version')) || 0;
  var response = UrlFetchApp.fetch("https://raw.githubusercontent.com/masuidrive/miyamoto/master/VERSION", {muteHttpExceptions: true});
  if(response.getResponseCode() == 200) {
    var latest_version = parseFloat(response.getContentText());
    if(latest_version > 0 && latest_version > current_version) {
      responder.send("最新のみやもとさんの準備ができました!\nhttps://github.com/masuidrive/miyamoto/blob/master/UPDATE.md を読んでください。");
      var response = UrlFetchApp.fetch("https://raw.githubusercontent.com/masuidrive/miyamoto/master/HISTORY.md", {muteHttpExceptions: true});
      if(response.getResponseCode() == 200) {
        var text = String(response.getContentText()).replace(new RegExp("## "+current_version+"[\\s\\S]*", "m"), '');
        responder.send(text);
      }
    }
  }
};

この部分を選択して、ctrl + / でコメントアウトしましょう。
うまくいくと行頭に//が入ります。
うまくいかない場合は、編集コメントの切り替え で対処しましょう。

GASの編集1

この処理はバージョンチェックを無効にする内容です。バージョンチェックがうまく動かないので、毎回意味もない通知がでてきますので、無効にしています。

611行目〜618行目の修正

// 休日を設定 (iCal)
var calendarId = 'ja.japanese#holiday@group.v.calendar.google.com';
var calendar = CalendarApp.getCalendarById(calendarId);
var startDate = DateUtils.now();
var endDate = new Date(startDate.getFullYear() + 1, startDate.getMonth());
var holidays = _.map(calendar.getEvents(startDate, endDate), function(ev) {
  return DateUtils.format("Y-m-d", ev.getAllDayStartDate());
});

このコードを下記のコードに差し替えます。

// 休日を設定 (iCal)
var url = 'https://www.googleapis.com/calendar/v3/calendars/outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com/events?key="取得したAPIキー"&timeMin=2016-01-01T00:00:00Z&timeMax=2016-12-31T00:00:00Z&maxResults=100&orderBy=startTime&singleEvents=true';
var data = JSON.parse(UrlFetchApp.fetch(url).getContentText());
var holidays = _.map(data.items, function(e) {
  return e['start']['date'];
});
var calendarId = 'ja.japanese#holiday@group.v.calendar.google.com';
var calendar = CalendarApp.getCalendarById(calendarId);
var startDate = DateUtils.now();
var endDate = new Date(startDate.getFullYear() + 1, startDate.getMonth());

コードの中にある「取得したAPIキー」はGoogleカレンダーのAPIキーのことです。
任意で入れてください。入れなくても動作はします。
APIキーの取得方法は Google APIs で取得できます。
細かい取得方法は今回は解説しません。

ここまでできたら ファイル保存 しましょう。


初期化の設定をしよう

実行setUP と選択します。

初期化の設定1

「承認が必要です」と出てきますので、「許可を確認」します。
「許可のリクエスト」もでてくるので「許可」しましょう。

これで Google Drive に「Slack Timesheets」というスプレッドシートが追加されます。
このシートに勤怠情報が自動で入力されていきますが、まだ設定が終わっていないので設定を続けていきましょう。

公開ウェブアプリケーションとして導入 と選択します。

初期化の設定2

「アプリケーションにアクセスできるユーザー」を全員(匿名ユーザーを含む)に変更して導入を押しましょう。

初期化の設定3

でてきたポップアップにあるURLをコピーして、どこかに一時的に保存しておきましょう。

ここから後の作業はほぼ本家のREADME.md通りですが、slackがバージョンアップしていて若干UIが違いますので、軽めに解説します。

Slackの設定

勤怠管理に使いたいチャンネルをslackに追加します。

Outgoing Webhooks の追加

slackの設定

追加したら右上の歯車アイコンより「Add an app or integration」を選択します。

「Outgoing Webhooks」と検索して、「Add Configration」で導入します。

URL(s)の設定で先ほどコピーしておいたURLを貼り付けます。

Customize Name や Customize Icon でbotの名前やアイコンを決めましょう。(あとで変更できます)

諸々設定し終わったら「Save Settings」で終了します。

Incoming Webhooks の追加

さきほどと同じ要領で「Incoming Webhooks」と検索して、導入します。

Post to Channel を作ったチャンネルに設定します。

Webhook URLというのをまた一時的に保存しておきましょう。

ここでもbotの名前とアイコンを同じものに設定します。

スプレッドシートの設定

「初期化の設定をしよう」のところで生成された「slack timesheets」のスプレッドシートを開きましょう。

スプレッドシートの設定

B1セルに先ほど保存しておいたWebhook URLを貼り付けます。

これで全ての設置が完了です!お疲れ様でした。

さっそくbotに話しかけてみましょう!

レスポンスがあって、スプレッドシートに情報が書き込まれていれば大成功です。

メッセージの設定

本家のREADME.mdにあるように、スプレッドシートの「_メッセージ」のテキストを編集すれば、botの応答メッセージを変更することが出来ます。
下の行に追加すればランダムで選ばれます。

まとめ

以上がslackで勤怠管理botを動かすのに必要な手順でした。
slackもgoogleも今もアップデートを繰り返しているのでまた動かなくなるかもしれませんので、まずは勤怠管理になれるために始めようかな、という会社であれば、ぜひ導入してみてください。

慣れてきたところはクラウドサービスの勤怠管理へ移行しましょう。

エラーメッセージのメールが飛んでくることもあるので、鬱陶しく思うようであればフィルタリングしておくと良いと思います。

過去にもこのような神ツールを記事配信しておりますので、ぜひチェックしてみてください!

【神ツールシリーズ】
【完全無料】Googleスプレッドシートを最強のプロジェクト管理ツールにする裏技を紹介します!


※本記事に関する技術的な質問についてはお受けいたしかねますので、ご了承ください。

勤怠管理システム
選び方ガイド
この記事が良かったら、いいね!をしてください!最新情報をお届けします!
御社のサービスを
ボクシルに掲載しませんか?
掲載社数3,000
月間発生リード数30,000件以上
勤怠管理システムの最近更新された記事