【Mac】AppleScript と Raycast で好きなショートカットをつくる

# はじめに

**Raycast**（Spotlight検索ライクなアプリ）を使用し、好きなショートカットを作ります。

実行手順は以下です。

1. `applescript`ファイルを作成
1. `sh`ファイルから`applescript`を呼び出し実行
1. ショートカット設定

# 1. `applescript`ファイルを作成

今回は、Raycastを使用し`applescript`ファイルを作成します。

音量調整機能を作成します。



| ![スクリーンショット 2024-07-14 12.57.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/fbcefb3b-db7b-6d7f-6475-8ba0cf2732de.png) | ![スクリーンショット 2024-07-14 12.58.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/9ad164b9-d124-e7b6-83ae-a2389e7e0598.png) |
|:-:|:-:|
| 1. `Extentions`から`+`をクリック  | 2. `Create Script Command`をクリック  |
| ![スクリーンショット 2024-07-14 13.04.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/6b727a37-fc2b-3b41-e52d-8d0580a1c9dc.png) | ![スクリーンショット 2024-07-14 13.11.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/fde60d33-c99d-9c54-f8cd-7fa2ad1a3ee0.png)  |
| 3. 以下を入力<br>`Template`：`Apple Script`<br>その他の入力は任意<br><br>`Create Script`をクリック→`Save` | 4. 右クリック→`Open` |
| | |
| 5. コードを下記に書き換え | |

## before
```applescript
#!/usr/bin/osascript

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title decrease_volume_with_popup
# @raycast.mode compact

# Optional parameters:
# @raycast.icon 🤖
# @raycast.packageName Volume Control

log "Hello World!"
```

## after

```applescript
#!/usr/bin/osascript

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title increase_volume_with_popup
# @raycast.mode compact

# Optional parameters:
# @raycast.icon 🔉
# @raycast.packageName Volume Control


set currentVolume to output volume of (get volume settings)
if currentVolume > 0 then
	set volume output volume (currentVolume - 5)
end if
set newVolume to output volume of (get volume settings)
display notification "Current volume: " & newVolume
```

# 2. `sh`ファイルから`applescript`を呼び出し実行

| ![スクリーンショット 2024-07-14 12.57.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/fbcefb3b-db7b-6d7f-6475-8ba0cf2732de.png) | ![スクリーンショット 2024-07-14 12.58.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/9ad164b9-d124-e7b6-83ae-a2389e7e0598.png) |
|:-:|:-:|
| 1. `Extentions`から`+`をクリック  | 2. `Create Script Command`をクリック  |
| ![スクリーンショット 2024-07-14 18.40.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/01d7839b-f535-ba3a-9bc8-ab83deb2f08a.png) | ![スクリーンショット 2024-07-14 13.11.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/fde60d33-c99d-9c54-f8cd-7fa2ad1a3ee0.png)  |
| 3. 以下を入力<br>`Template`：`Bash`<br>その他の入力は任意<br><br>`Create Script`をクリック→`Save` | 4. 右クリック→`Open` |
| | |
| 5. コードを下記に書き換え | |

## before
```applescript
#!/bin/bash

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title decrease_volume_with_popup_exe
# @raycast.mode compact

# Optional parameters:
# @raycast.icon 🤖
# @raycast.packageName Volume Control

# Documentation:
# @raycast.description 実行ファイル

echo "Hello World!"
```

## after

```applescript
#!/bin/bash

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title decrease_volume_with_popup_exe
# @raycast.mode compact

# Optional parameters:
# @raycast.icon 🔉
# @raycast.packageName Volume Control

# Documentation:
# @raycast.description 実行ファイル

osascript "your/path"
```
:::note
<details><summary>pathの取得方法</summary>

Finderから「パス名のコピー」で取得可能です。直接貼り付けてください
![スクリーンショット 2024-07-14 18.48.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/ad5a3d2f-8713-e215-6dc6-ef8e06a3705e.png)

</details>
:::

## 3. ショートカット設定

![スクリーンショット 2024-07-14 18.52.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/4005019d-bbb0-3806-1c82-517d238f2b8d.png)

# 完成！
新しい機能を作成し、ショートカットを設定することができました。








# 追記

`increase_volume_with_popup`も同様に設定します。

コード

```applescript
#!/usr/bin/osascript

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title increase_volume_with_popup
# @raycast.mode compact

# Optional parameters:
# @raycast.icon 🔊
# @raycast.packageName Volume Control


set currentVolume to output volume of (get volume settings)
if currentVolume < 100 then
	set volume output volume (currentVolume + 5)
end if
set newVolume to output volume of (get volume settings)
display notification "Current volume: " & newVolume
```


# 補足

`applescript`を直接実行できなかった（エラーが発生した）ため、`sh`を挟んでいます。

`sh`（`osascript`）を挟まずに設定できる方法をご存じの方は教えて下さい