こんにちは。エキサイト株式会社でアプリエンジニアをしている岡島です。エキサイトホールディングス Advent Calendar 2024の6日目を担当させていただきます。 今回は、RaycastとScript Commandを用いて、Slackでのジョブカン勤怠打刻を自動化する方法をご紹介します。
なお、使用PCはMacOS、ブラウザはArcを用いています。MacOSでのGUIの操作が比較的簡単なAppleScriptを用いた方法となりますのでご注意ください。
↓例 Slackを開き、メッセージ送信まで自動化
Raycastとは
Raycastとは、アプリケーションの起動、ファイル検索、スクリプトの実行など、さまざまな操作ができるランチャーアプリです。ウィンドウマネジメントやクリップボードの機能もあり、便利です。
↓インストールはこちらから
出退勤時のジョブカンSlack打刻を自動化する
エキサイトでは、リモートワーク時の出退勤打刻をSlackのコマンドを用いて行います。勤怠管理はジョブカンを用いているので/jobcan_touch
というコマンドを入力し、打刻します。
出退勤時の流れ
- Slackを起動する
- コマンドを打つチャンネルを開く
/jobcan_touch
というコマンドを入力、送信
この一連の流れを、Raycastでコマンド1つ叩けば完了するようにScript Commandを用いて実装します。
どの画面からでもどのアプリを開いていても、
Raycastからコマンドを入力すれば
Slackが自動で起動し、自動で/jobcan_touch
のコマンドが送信されるようになります。
Script Commandを用いて自動化する
- Raycastを開き
create script command
と入力し、作成画面を開く - Template, Modeなどそれぞれ入力し、作成
- ファイルの保存先を指定して、保存
- 作成したファイルを編集
↓サンプル
#!/usr/bin/osascript # Required parameters: # @raycast.schemaVersion 1 # @raycast.title jobcan # @raycast.mode silent # Optional parameters: # @raycast.icon 🤖 tell application "Slack" activate delay 0.5 open location "slack://channel?team=<ワークスペースのID>&id=<チャンネルID>" delay 0.5 tell application "System Events" set the clipboard to "/jobcan_touch" keystroke "v" using {command down} delay 0.5 key code 36 key code 36 using {command down} end tell end tell
Script Commandの流れ
- Slackの起動
- Slackのチャンネルを開く
- クリップボードに
/jobcan_touch
をセット- 入力モードの影響を受けずに、
/jobcan_touch
のコマンドを打ちたいのでクリップボードを使用します
- 入力モードの影響を受けずに、
- エンター→送信
Slackのチャンネルを開く
コマンドで開く場合はopen "slack://channel?team=<ワークスペースのID>&id=<チャンネルID>”
ワークスペースのIDについて
Slackをウェブで開いた時のURLが https://app.slack.com/client/TXXXXXXX/CXXXXXXX になります。このTで始まる文字列が、ワークスペースの ID です。チャンネルIDについて
Slackのチャンネルを右クリックしてチャンネル詳細を表示する
を選択。 表示された画面の最下部にチャンネルIDがあります。
delay 0.5は起動時間や処理時間などを確保するため待機しています。 Scriptが完成したらRaycastを開き、コマンドを打てば自動的にコマンドが送信されます。
AppScript実行の許可
セキュリティとプライバシーの設定をしていないと実行時に下記エラーが表示されます。
System Eventsでエラーが起きました: スクリプトエディタにはキー操作の送信は許可されません。
この場合は、システム環境設定 >セキュリティとプライバシー > プライバシー > アクセビリティ > AppleScript エディタ.app の設定をONにする必要があります。
最後に
今回はScript Commandを用いて、ルーティンになっているSlackでのコマンド送信を自動化しました。 RaycastはQuicklinksという機能もあり、よく使うSlackのURLを登録しておけば、コマンド入力やショートカットキーを押すだけですぐにチャンネルが開けるようになります。 他にも日報の作成や勤怠報告なども自動化できそうです。
この記事が誰かのお役に立てれば幸いです。
最後まで読んでいただきありがとうございました。