1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

irucaをタスクスケジューラで自動更新してみた

Posted at

はじめに

新型コロナウイルスのため在宅勤務が基本となりましたが、お互いの状況がわからないとのことで、irucaという在席管理ツールを使うようになりました。

【iruca】
  https://iruca.co/

ただ、こういったツールは適切に更新されることで正しく運用できます。
逆に言うと更新漏れが起こるとツールの活用が不十分とも言えます。

そのため、更新漏れが起こらないよう機械的に更新できないか検討してみました。

実施したこと

Windows標準のタスクスケジューラを活用して、ログイン時にirucaのステータスを更新するbatファイルを起動させるものです。

irucaはAPIを提供しているため、外部からの更新が可能です。今回はそれを利用してます。

【irucaのAPIドキュメント】
 https://iruca.co/api

PowerShellでirucaのAPIを呼び出すスクリプトを作成、batファイルでPowerShellを稼働させ、タスクスケジューラでそのbatファイルを稼働させる、といった流れです。

作成したもの

前述の通り、PowerShellとbatファイルを作成しました。

APIを呼び出すPowerShell

irucaのステータスを「在席」にするのと、ひとことを「mm/dd 在席中」とするようにputメソッドでirucaの情報を更新するスクリプトにしています。

iruca.ps1
<# irucaの固定パラメータ #>
# ルームコード
$room_code = 'irucaのルームコード'

# APIトークン
$api_token = 'ルームに設定されているAPIトークン'

<# 個人別可変パラメータ #>
# 更新対象のメンバーID
$member_id = 'メンバーID'

# 更新するステータス
$status = '在席'

# 更新するメッセージ(現在日付取得→文字列形成)
$month = (Get-Date).Month
$day = (Get-Date).day
$message = "$month/$day 在席中"


<# API設定 #>
# メンバー情報更新APIのURL生成
$uri = "https://iruca.co/api/rooms/$room_code/members/$member_id"

# リクエストヘッダーの生成(あいことば設定ありの場合)
$headers = @{ 'X-Iruca-Token' = $api_token }

# パラメータ設定
$body = [System.Text.Encoding]::UTF8.GetBytes('{"status": "' + $status + '","message": "' + $message + '"}')

# API実行(PUT)
Invoke-RestMethod -Method PUT -Uri $uri -Headers $headers -Body $body -ContentType 'application/json'

PowerShellを採用した理由

わざわざPowerShellで作成しなくても、batファイル単体でもできなくはないです。
ただ、iruca APIではJSON形式でやり取りをする関係から、コマンドプロンプトで実行した場合、JSONが扱える(文字化けしない)ようにするにはjqコマンドをインストールしないといけないようでした。

会社の環境では勝手に追加インストールができないので、jpコマンドを必要としないPowerShellを採用しました。

タスクスケジューラで起動させるbatファイル

前述のPowerShellをbatファイル内で起動するようにしています。
わざわざbatファイル経由ではなく、PowerShellファイルを単体で起動させた方がシンプルなのですが、PowerShellファイルを自由に起動できないよう制限が設けられているようです。

そのため、batファイル内で一時的に実行ポリシーを変更してPowerShellファイルを起動させてます。

run.bat
@echo off
REM irucaのステータスを更新するツール
echo irucaを更新しています。

powershell -NoProfile -ExecutionPolicy Unrestricted .\iruca.ps1

echo 更新完了しました
exit

タスクスケジューラの登録

基本的にはこちらを参考にして登録してます。

【タスクスケジューラの設定内容の詳細】
 https://jm1xtk.dip.jp/cnt/109_task/index.php

今回はログオン時にbatファイルを起動させたいので、トリガーを「ログオン時」にしてます。

タスクスケジューラの登録の際、注意しなければいけないポイントとしては、batファイル内で稼働させるpowershellが相対パスで指定されてるため、作業フォルダの指定が必要になります。

【タスクスケジューラに登録したバッチがうまく実行できない時に確認すること】
 http://sogohiroaki.sblo.jp/article/178281845.html

まとめ

毎日のルーチン作業であるからこそ、漏れやゆるみが出てしまい、ツールの形骸化が生まれてしまいます。
また、同じことであるならば日々それに費やす時間がもったいないものです。

ささいなことでも自動化できれば適切に続けられるので、APIが提供されているものは積極的に活用していければチーム運営が良くなると思います。

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?