ブラウザ版 Notion を AppleScript で操作する

# Mac で Notion､ブラウザ使うかアプリ使うか

Mac のブラウザ版 Notion は AppleScript で操作することができます。
**アプリ版ではできません**（2023-02-09 現在）。


# 選択文字列のみの色を指定する AppleScript

例を挙げます。以下は、選択文字列のみの色を指定する AppleScript です。

::: note warn
**追記：** 2023-02-23
どうやら拡張機能の有無や、そもそもの環境の違いで動かないことが往々にしてあります。
あくまで一例として捉えていただければ幸いです。
:::

文字色を「ピンク」にする場合を例に挙げます。


## Google Chrome を使っている場合

``` AppleScript:AppleScript
tell application "System Events" to tell process "Google Chrome" to tell window 1
	tell group 1 of group 1 of group 1 of group 1
		tell group 1 of group 1 of (first UI element whose title is not "")
			tell group 1 of group 1 of group 1 of group 2 of group 2
				click button "A"
			end tell
			delay 0.5
			tell group 1 of group 1 of group 2 of group 3 of group 2
				tell group 1 of group 1 of group 1
					
					-- ここに番号  ↓  を書く（この場合は「ピンク」になる）
					click button 10
					
				end tell
			end tell
		end tell
	end tell
end tell

-- 指定したい色によって書く button の番号が異なる
-- button   1 = 最後に使った色
-- button   2 = デフォルト
-- button   3 = グレー
-- button   4 = ブラウン
-- button   5 = オレンジ
-- button   6 = 黄
-- button   7 = 緑
-- button   8 = 青
-- button   9 = 紫
-- button  10 = ピンク
-- button  11 = 赤
-- button  12 = 背景色なし
-- button  13 = 背景色：グレー
-- button  14 = 背景色：ブラウン
-- button  15 = 背景色：オレンジ
-- button  16 = 背景色：黄色
-- button  17 = 背景色：緑
-- button  18 = 背景色：青
-- button  19 = 背景色：紫
-- button  20 = 背景色：ピンク
-- button  21 = 背景色：赤
```

※ Chromium 系列のブラウザなら、1行目のブラウザ名の部分だけ変えれば動きました。


## Arc を使っている場合

``` AppleScript:AppleScript
tell application "System Events" to tell process "Arc" to tell window 1
	tell (first UI element whose title is not "") of splitter group 1
		tell group 2 of group 1 of group 1
			click button "A" of group 1 of group 1 of group 1 of group 2
			delay 0.5
			tell group 1 of group 1 of group 1 of group 1 of group 2 of group 3
				
				-- ここに番号  ↓  を書く（この場合は「ピンク」になる）
				click button 10 of group 1
				
			end tell
		end tell
	end tell
end tell

-- 指定したい色によって書く button の番号が異なる
-- button   1 = 最後に使った色
-- button   2 = デフォルト
-- button   3 = グレー
-- button   4 = ブラウン
-- button   5 = オレンジ
-- button   6 = 黄
-- button   7 = 緑
-- button   8 = 青
-- button   9 = 紫
-- button  10 = ピンク
-- button  11 = 赤
-- button  12 = 背景色なし
-- button  13 = 背景色：グレー
-- button  14 = 背景色：ブラウン
-- button  15 = 背景色：オレンジ
-- button  16 = 背景色：黄色
-- button  17 = 背景色：緑
-- button  18 = 背景色：青
-- button  19 = 背景色：紫
-- button  20 = 背景色：ピンク
-- button  21 = 背景色：赤
```


## Vivaldi を使っている場合

::: note
**更新日：** 2023-02-23
タブ/パネル/ステータスバー等の表示/非表示や、タイル表示のオン/オフに関わらず動作するようにしました。その他の環境（拡張機能の有無など）が自分と異なる場合は動かないことがあります。以下は拡張機能ナシの場合です。
:::

``` AppleScript:AppleScript
-- この部分に番号を書く ↓（この場合は「ピンク」になる）
set ButtonNumber to 10

tell application "System Events" to tell process "Vivaldi" to tell first window to tell group 1 of group 1 of group 1 of UI element 1 of group 1 of group 1 of group 1 of group 1 to try

	-- タイル表示オフの場合
	tell group 2 of group 1 of group 1 of UI element 1 of group 1 of group 1 of group 1 of group 1 of group 1 of group 1 of group 2 of group 2 of group 2 of (group 1 whose class of group 1 of group 1 of group 2 of group 2 of group 2 is group)
		click button "A" of group 1 of group 1 of group 1 of group 2
		delay 0.1
		click button ButtonNumber of group 1 of group 1 of group 1 of group 1 of group 1 of group 2 of group 3
	end tell
	
on error

	-- タイル表示オンの場合
	tell group 1 of group 1 of group 2 of group 2 of group 2 of (group 1 whose class of group 1 of group 1 of group 2 of group 2 of group 2 is group)
		tell (group 1 whose focused of text area 1 of group 1 of group 2 of group 2 of group 1 of group 1 of group 1 of UI element 1 of group 1 of group 1 of group 1 of group 1 of group 1 of group 1 is true)
			click button "A" of group 1 of group 1 of group 1 of group 2 of group 2 of group 1 of group 1 of UI element 1 of group 1 of group 1 of group 1 of group 1 of group 1 of group 1
		end tell
		delay 0.1
		tell (group 1 whose focused of button "A" of group 1 of group 1 of group 1 of group 2 of group 2 of group 1 of group 1 of UI element 1 of group 1 of group 1 of group 1 of group 1 of group 1 of group 1 is true)
			click button ButtonNumber of group 1 of group 1 of group 1 of group 1 of group 1 of group 2 of group 3 of group 2 of group 1 of group 1 of UI element 1 of group 1 of group 1 of group 1 of group 1 of group 1 of group 1
		end tell
	end tell
	
end try

-- 指定したい色によって書く button の番号が異なる
-- button   1 = 最後に使った色
-- button   2 = デフォルト
-- button   3 = グレー
-- button   4 = ブラウン
-- button   5 = オレンジ
-- button   6 = 黄
-- button   7 = 緑
-- button   8 = 青
-- button   9 = 紫
-- button  10 = ピンク
-- button  11 = 赤
-- button  12 = 背景色なし
-- button  13 = 背景色：グレー
-- button  14 = 背景色：ブラウン
-- button  15 = 背景色：オレンジ
-- button  16 = 背景色：黄色
-- button  17 = 背景色：緑
-- button  18 = 背景色：青
-- button  19 = 背景色：紫
-- button  20 = 背景色：ピンク
-- button  21 = 背景色：赤
```


## Opera を使っている場合

::: note
**更新日：** 2023-02-10
:::

できませんでした。

┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

※ この他のブラウザを使っている場合の AppleScript も、ヒマなときに追記していくかもしれません。


# 簡略的な解説

::: note
**更新日：** 2023-02-10
:::

これらの AppleScript は、

1. **文字列を選択したときに出現するポップアップメニューの「A｣ の部分をクリック**
1. **さらに出てきたポップアップメニューの、上から数えて「指定した番号」番目のメニューをクリック**

しているだけの簡単なものです。


# 純正ショートカットアプリと組み合わせる

こんな感じでショートカットキーで実行できるようになります（以下のスクショ画像部分を参照）。
ㅤ

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">私がMacでアプリ版のNotionを使う理由が消滅した… ブラウザ版の方が便利や…<br><br>ちなみにこれの何が便利なのかというと、Notionのクリック操作をすべてキーボードだけで完結できる（はず）だということ。<br>たとえショートカットキーがデフォルトで用意されていなかったとしても、もうそんなの関係ない！ <a href="https://t.co/2mc7zqSfFi">https://t.co/2mc7zqSfFi</a></p>&mdash; マナブ｜作業高速化推進クラブ (@MANABU0SEC) <a href="https://twitter.com/MANABU0SEC/status/1623119786522873858?ref_src=twsrc%5Etfw">February 8, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# Q & A

ご質問がございましたら、上のツイートに返信していただけると気づきやすいです。
分かる範囲で答えます。