11
11

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 3 years have passed since last update.

INTECAdvent Calendar 2021

Day 20

Mac標準のAutomatorでRPAに入門してみる

Last updated at Posted at 2021-12-19

はじめに

あちこちで「RPA」という言葉を聞くのですが、まだやったこないので試してみたい、というのがきっかけです。
どの RPA ツールにしようかと調べ始めたところ、Mac には標準で Automator というツールが入っていて、これで RPA のようなことができるとのことなので、触ってみました。
OSは、macOS Monterey 12.0.1 となります。(Windows の方ごめんなさい)

Automator 起動

標準で Mac にインストール済みなので、アプリケーション → Automator から起動します。
種類は「アプリケーション」を選択します。(アプリケーションとして実行可能となる)
以下の画面が表示されるので、アクションの一覧からやりたいことを選択して、ワークフローに追加していく流れとなります。
できるアクションが一覧で表示されているので、わかりやすいですね。
image.png

アクティビティモニタを起動してスクリーンショットを撮る

色々なアクションがあるのですが、今回はアクティビティモニタという Mac 標準のアプリケーションを起動し、画面のスクリーンショットを撮ってアプリケーションを終了する、という処理を自動化してみます。

スクリーンショットのワークフロー作成

  • 「アプリケーションを起動」を追加
  • その他 → ユーティリティ → アクティビティモニタ を選択
  • 「スクリーンショットを撮る」を追加
  • 保存先のファイル名を設定
  • 「アプリケーションを終了」を追加
  • その他 → ユーティリティ → アクティビティモニタ を選択

ワークフローを作成したら、アプリケーションとして保存します。

image.png

Automator でスクリーンショットを撮るための環境設定

Automator でスクリーンショットを撮るには、セキュリティ設定が必要です。
システム環境設定 → セキュリティとプライバシー → プライバシー → 画面収録 で、「Automator」を追加してチェックします。(カギも解除)
さらに、先ほど作成したアプリケーション「アクティビティモニタ_スクリーンショット」も追加してチェックします。
Automator からスクリーンショットを実行する場合は、一旦再起動すると設定が有効になります。

image.png

スクリーンショットのワークフロー実行

Automator の右上にある実行ボタンを押下することで、Automator 内からワークフローを実行することができます。
作成したアプリケーション(ファイル)を実行してもOKです。(アプリケーションとして実行)
実行すると、以下の画像のように、指定した場所にスクリーンショットが保存されます。
(CPU の履歴グラフなどが表示されているのは、アクティビティモニタを前回起動した時に表示していたためです)
image.png

AppleScript でブラウザ操作を自動化する

もう1つの RPA の用途として、ブラウザ操作をしてみたいと思います。
Automator には「指定された URL を取得」と「Webページを表示」というアクションがあり、これらを使うことでブラウザで Web ページを開くことができます。また、ページの内容を取得するようなアクションなども用意されています。
今回はそれらの用意されたアクションを使うのではなく、AppleScript(および JavaScript)を使ってブラウザ操作をしてみます。

ブラウザ操作のワークフロー作成

Automator のアクションから「AppleScript を実行」をワークフローに追加すると、AppleScriptを記述できます。
今回のスクリプトでは、以下のことを自動的に行います。

  • Safariを起動
  • 某I社のホームページのニュースで、一番上のリンクをクリックして表示(新しいタブ)
  • 某天気のホームページで、指定した郵便番号で検索した市区町村のピンポイント天気のページを表示(新しいタブ)

※以下のスクリプトでは、本来の URL は伏せておきます。

tell application "Safari"
	activate
	open location "https://www.iiii.co.jp/news/"
	delay 5
	do JavaScript "document.querySelector('ul.list-news-01 a').click();" in document 1
	delay 5
	open location "https://weather.yyyy.co.jp/weather/"
	delay 5
	tell application "System Events"
		keystroke tab
		keystroke tab
		keystroke "160-0023"
		key code 76 -- Enter
	end tell
	delay 5
	do JavaScript "document.querySelector('div.serch-table a').click();" in document 1
end tell

記述したら名前を付けて保存します。

なお、AppleScript のアクションは他のアクションともちろん併用できますので、できることの幅が広まります。

Safari の JavaScript 許可設定

Automator から Safari 上で JavaScript を実行するために、以下の設定を行います。

  • Safari の環境設定 → 詳細 → 「メニューバーに"開発"メニューを表示」にチェックして、開発者ツールを表示できるようにします。
  • Safari の「開発」メニューから、「AppleEvent からの JavaScript を許可」にチェックします。

ブラウザ操作のアプリケーションのセキュリティ確認

作成したアプリケーション(ファイル)を実行すると、以下のようなダイアログが表示されるので、「OK」を押下します。

image.png

さらに、「System Events」についても同様のダイアログが表示されるので「OK」を押下します。
(Automator から実行した場合も、同様のダイアログが出たかもしれません。その場合も「OK」を押下します)

キー入力するための環境設定

Automator でキー入力できるようにするには、セキュリティ設定が必要です。
システム環境設定 → セキュリティとプライバシー → プライバシー → アクセシビリティ で、「Automator」を追加してチェックします。(カギも解除)
さらに、先ほど作成したアプリケーションも追加してチェックします。

ブラウザ操作のワークフロー実行

ここまでの設定をした上で、Automator の右上にある実行ボタンを押下、もしくは作成したアプリケーション(ファイル)を実行すると、Safari が想定通りに操作されるはずです。

おわりに

今までに BeautifulSoup や Selenium を使った Web スクレイピングはやったことはあったのですが、そこまでのプログラミングが必要ないブラウザ操作や、それ以外の Mac の操作もできる Automator は、無償で気軽に使える自動化ツールですね。
カレンダーと組み合わせてスケジュール実行することもできるみたいですし、今回はお試しでしたが、もっと実用的なものも作ってみることができそうです。

11
11
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
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?