[Automator] [AppleScript] [VPN] GlobalProtectの自動ログイン

Macの標準アプリ「Automator（オートメーター）」を利用して、GlobalProtect（VPN接続アプリ）へのログインを自動化する

# 手順
Automator（オートメーター）を起動
![00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/15402280-0ebb-56f9-3b92-b08d8f9c8645.png)

「新規作成」を選び、「書類の選択」では**「アプリケーション」**を選びます。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/8768b5d9-68d3-9cf2-281c-6db2b0bb95d0.png)


左側のアクションの中から**「AppleScriptを実行」**を選びます。
以下の**AppleScriptのコード**を以下コードを貼り付けます
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/8a1f679a-7b9a-ea09-774b-c871d4dc8e0d.png)

### AppleScriptのコード
:::note info
**あなたのユーザー名**と**あなたのパスワード**を書き換えてください
:::

```
--
-- GlobalProtectアプリケーションにログインし、VPNに接続するAppleScriptです。
-- ユーザー名とパスワードはコード内に平文で記述されています。
--

-- ユーザー名とパスワードの設定はコード内に記載する必要があります
property userAccount : "あなたのユーザー名"
property userPassword : "あなたのパスワード"

-- メインハンドラ
on run {}
	-- GlobalProtectアプリケーションを操作する
	try
		-- メニューバーアイテムをクリックする
		clickMenuBarItem()
		
		-- 接続ボタンをクリックする
		clickButton("接続", "Connect")
		
		-- ログイン画面が表示されるまで待機する
		waitForLoginWindow()
		
		-- ユーザー名とパスワードを入力する
		enterCredentials(userAccount, userPassword)
		
		-- Enterキーを押して接続する
		pressEnterKey()
	on error errMsg
		display alert "An error occurred: " & errMsg
	end try
	
	return
end run

-- メニューバーアイテムをクリックする
on clickMenuBarItem()
	tell application "System Events" to tell process "GlobalProtect"
		click menu bar item 1 of menu bar 2
	end tell
end clickMenuBarItem

-- 指定されたUIエレメントがウィンドウ内に存在する場合、クリックする
on clickButton(japaneseLabel, englishLabel)
	tell application "System Events"
		if exists UI element japaneseLabel of window 1 of application process "GlobalProtect" then
			click UI element japaneseLabel of window 1 of application process "GlobalProtect"
		else if exists UI element englishLabel of window 1 of application process "GlobalProtect" then
			click UI element englishLabel of window 1 of application process "GlobalProtect"
		end if
	end tell
end clickButton

-- ログイン画面が表示されるまで待機する
on waitForLoginWindow()
	tell application "System Events"
		repeat until (exists UI element "キャンセル" of window 1 of application process "GlobalProtect") or ¬
			(exists UI element "Cancel" of window 1 of application process "GlobalProtect") or ¬
			(exists UI element "接続" of window 1 of application process "GlobalProtect") or ¬
			(exists UI element "Connect" of window 1 of application process "GlobalProtect")
			delay 0.5
		end repeat
	end tell
end waitForLoginWindow

-- ユーザー名とパスワードを入力する
on enterCredentials(account, passwd)
	-- ユーザー名をクリップボードからペーストする
	set the clipboard to {text:(account as string), Unicode text:account}
	tell application "System Events"
		keystroke "v" using {command down}
		delay 0.3
	end tell
	
	-- Tabキーを押す
	pressTabKey()
	
	-- パスワードを入力する
	typePassword(passwd)
end enterCredentials

-- Tabキーを押す
on pressTabKey()
	tell application "System Events"
		keystroke (ASCII character 9)
	end tell
end pressTabKey

-- パスワードを入力する
on typePassword(passwd)
	-- パスワードをクリップボードからペーストする
	set the clipboard to {text:(passwd as string), Unicode text:passwd}
	tell application "System Events"
		keystroke "v" using {command down}
	end tell
end typePassword

-- Enterキーを押す
on pressEnterKey()
	tell application "System Events"
		keystroke (ASCII character 13)
	end tell
end pressEnterKey
```


最後に名前をつけて保存します
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/2752dc69-8fe6-36a7-fd6b-0d4db38a9e2e.png)
**GlobalProtect自動ログインアプリ**の完成です

# Automatorのアイコンを変える

右クリックして「情報を見る」をクリックします。
左上のロボットアイコンをクリックして選択（縁が青くなります）
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/0708b166-ea04-e242-089a-5a7160e9c500.png)

[アイコン画像](https://claremont.apsva.us/wp-content/uploads/sites/13/2020/09/unnamed.png) をクリップボードへコピーし、ペースト（⌘Command＋V）
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/46169bd6-34fb-a7fa-6c76-535bdb710944.png)


#編集方法（パスワードの更新時など）
Automator（オートメーター）を起動し、作成した**GlobalProtect自動ログインアプリ**を選択
AppleScriptのコードを編集し、保存（⌘Command＋S）します

![0000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82835/59284bcd-ac95-dff7-38f2-ede27ec179af.png)