macOSのSpaces(仮想デスクトップ機能)で、任意のワークスペースに切り替えを行うAppleScriptです。
–> Download changeSpace_v2.1.scptd(with spaces_tool in its bundle)
Spaces系の機能はAPIが公開されておらず、Private APIを叩きまくることになります。現在定義されているSpacesの名称一覧の取得(list)、現在表示中のSpacesの名称(current)についてはこの方法で情報を取得できています。


肝心のSpaces間の切り替えについては、GUI Scripting経由でキーコード(Control 1、Control 2など)を送出することで行なっています。これらのキーボードショートカットが有効になっていないと切り替え自体が行えません(このあたりの機能がOS内部で十分にサポートされていないため、このような行き当たりばったりの実装になってしまいます)。

そのため、本AppleScriptを実行するプログラム……スクリプトエディタ上で実行するのであればスクリプトエディタに、Script Menuで実行するのであればScript MenuにGUI Scriptingの実行権限(アクセシビリティ)を許可しておく必要があります。また、同様の理由からGUI Scripting呼び出し権限を取得できないAppleScriptの実行プログラムからはSpacesの切り替え操作を行えません。
以下のAppleScriptは内蔵ツールを呼び出すだけのものであり、これだけでは実行できません。上記リンクからバンドルスクリプト自体をダウンロードして、実行してください。
# もしかしたら、space_toolは各クライアント上でビルドし直さないとダメかもしれないので、実行時にビルド+実行する形態に書き換えるかもしれません
| AppleScript名:ワークスペース切り替えv2.1.scptd |
| — – Created by: Takaaki Naganoya – Created on: 2026/05/05 — – Copyright © 2026 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set aPath to path to resource "space-tool" set pPath to POSIX path of aPath delay 0.5 –超重要。スクリプトエディタ上で実行するには必須 — ① 一覧取得 set allSpaces to do shell script (quoted form of pPath) & " list" (* "Desktop_1 Desktop_2" *) — ② 現在選択されているSpaces名称を取得 set currentSpace to do shell script (quoted form of pPath) & " current" –> "Desktop_1" — ③ 切り替え(例:Desktop_2へ) my switchToSpace(2) on switchToSpace(spaceNumber) — 数字キーのキーコードマップ (1=18, 2=19, 3=20, 4=21, 5=23, 6=22, 7=26, 8=28, 9=25) set keyCodes to {18, 19, 20, 21, 23, 22, 26, 28, 25} set theCode to item spaceNumber of keyCodes tell application "System Events" key code theCode using {control down} end tell end switchToSpace |