(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Sikulix】RPAでSlackのチャンネルの先頭から読み直してみた

スポンサーリンク

はじめに

Slackのチャンネルに途中から招待された際、先頭の会話から流れを確認したい場合があります。
が、スクロールバーで一番上部に行くも順々に過去のチャットが読み込まれる構造になっているので先頭行に一気にいけません。

というわけでSikuliXにて延々と上スクロールを行う手法で先頭行に行くことができたので知見をシェアしておきます。

環境情報
  • Slack Web版
  • SiluliX 2.03 / Java 8

RPAツール

RPAツールではスクロール機能は基本操作として入っているとは思いますが、今回はOSSかつJavaが入っていれば動作するSikulixで実現しました。


具体的には以下コードを実行すると延々とスクロールします。

sleep(10)
while True:
    wheel(WHEEL_UP,10)
    sleep(5)

wheel(WHEEL_UP,NUM)で上にスクロールをかけ、数字部分の大きさでスクロールをかける量が指定できます。
定期的にSleep処理を挟んでいるのは途中で処理を止めたい場合にJavaプロセスを落とす必要があるからです。

止めるにはプロセスを強制停止する必要がある

また、Slackでは最上位まで行くと

@hoge created this private channel on xx This is the very beginning of the xx channel. Description: xx

という文言があるのでこの文言を見るとwhileから抜ける処理もできそうです。

同プログラムを動かしてブラウザでSlackの画面を開いて放置しておけば、触らずとも自動で先頭行までスクロールしてくれます。

スクロールの例

円周率1万桁のテキストを209行をSikuliXでスクロールしました。尚、wheel(WHEEL_UP,120)としています。

Sikulixによるスクロールの例

終わりに

Slackは別アプリにデータを移行できるようなのでチャットデータをエクスポートして読み込むこともできそうですが、一番簡単な方法で先頭に戻るのは延々スクロールをしておく力業だと思います。プログラムを動かしておけば目を離していても先頭まで遷移してくれるので個人的にはたまに利用しています。

他にも先頭に移動する方法をご存知の方は、ぜひコメント欄にてお知らせいただけますと幸いです。