3
2

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 1 year has passed since last update.

web会議への参加を自動化した話

Last updated at Posted at 2023-01-26

Google カレンダーに登録されているweb会議に、5分前に自動的に参加してくれるようにできたのでそのやり方を書きます。

これを使えば会議への出席忘れや会議の少し前から待機している必要がなくなります。

環境

  • mac
  • google calendar
  • google meets
  • safari

1.自動的にブラウザを立ち上げる

macには操作を自動化してくれるAutomatorというアプリケーションがあります。
今回はこちらを主に使用して自動化します
スクリーンショット 2023-01-26 15.39.48.png

automatorを立ち上げると処理を聞かれるので、なんでもいいですがとりあえずワークフローを選択
スクリーンショット 2023-01-26 15.42.33.png

右側に処理をD&Dすることでワークフローを作成できます。
スクリーンショット 2023-01-26 15.42.01.png

1.2 シェルスクリプトからsafariを起動

open -a "/Applications/Safari.app"

スクリーンショット 2023-01-26 15.45.03.png

こちら後に記述するAppleScriptでもアプリケーションの起動はできるのですが、私の場合AppleScriptで行うと、アプリケーションを指定してもデフォルトのブラウザで起動してしまったので、シェルスクリプトを使用しました。

Safariで起動した理由は、AppleScriptを使用する場合、safariの方ができることが多いからです。

まずはここまでを実行してみてください。
無事にsafariが起動できたら第一段階クリアです。

2.AppleScriptでブラウザ操作

2.1Googleカレンダーを起動

ワークフローにAppleScriptを追加してコードを追加します

tell application "Safari"
	delay 3
	tell window 1
		set URL of current tab to "https://calendar.google.com/calendar"
	end tell
end tell

スクリーンショット 2023-01-26 15.48.33.png

一応コードを解説するとtellで操作するアプリケーションを指定します。
delayは処理を待ってくれます。safariが起動してから少し待って、google calendarのURLに遷移するようにしています。

注意

safariでは必ず開発メニューから

  • apple eventからのJavascriptを許可にチェック
  • javascriptを無効にチェックが入っていない

状態か確認してください

この状態でなければjavascriptがsafariで動きません。

2.2 Googleカレンダーのイベントをクリックする

Googleカレンダーのページをデベロッパーツールを使用して確認すると押したいイベントのボタンのクラスを取得できます。

スクリーンショット 2023-01-26 15.57.53.png

これを見る限り、"ynRLnc"というクラスを探してそのボタンを押せば良いですね。
ただし、すべてのイベントに対してこのクラスが含まれるので、特定のイベントのみクリックしたい場合は
条件を設定します。
今回は今日のイベントにのみ参加するjavascriptのコードを書きました。

tell application "Safari"
	delay 3
	set theScript to "
  var hiduke = new Date();
  var year = hiduke.getFullYear() + '年';
  var month = hiduke.getMonth() + 1 + '月';
  var day = hiduke.getDate() + '日';

  var target = document.getElementsByClassName('ynRLnc');
  for (let i = 0; i < target.length; i++) {
      if (
        target[i].innerHTML.includes(year) &&
        target[i].innerHTML.includes(month) &&
        target[i].innerHTML.includes(day)
      ) {
        target[i].click();
      }
      }
	"
	do JavaScript theScript in current tab of first window
end tell

AppleScriptでjavascriptを実行するには
do JavaScirpt ~処理
という記述が必要です。
また、javascriptの中で""が含まれているとそこで処理が終了してしまうので、必ず''を使ってください。

こちらがうまく実行されると、イベントのモーダルが表示されます。
スクリーンショット 2023-01-26 16.04.13.png

なのでまた同じようにボタンが存在するクラス"EyDoae"を先ほどとほぼ同じ処理でクリックする処理をAppleScriptでワークフローに追加します。

スクリーンショット 2023-01-26 16.07.40.png

tell application "Safari"
	delay 3
	set theScript to "
  const join = document.getElementsByClassName('EyDoae');
  const link = join[0].firstElementChild;
  link.click();
	"
	do JavaScript theScript in current tab of first window
end tell

3.google meetsに参加

googleカレンダーからgoogle meetsへの参加ボタンが押されたら新しいタブにてgoogle meetsが開かれます。

スクリーンショット 2023-01-26 16.08.17.png

初期設定ではカメラとマイクがONになっているので、OFFにして起動したい人は以下のappleScriptを追加してください。

スクリーンショット 2023-01-26 16.13.55.png

tell application "System Events"
	delay 3
	key code 14 using {command down}
	key code 2 using {command down}
end tell

これはカメラとマイクをOFFにするショートカットキーです。

tell application "Safari"
	delay 3
	set theScript to "
  var meets = document.getElementsByClassName('VfPpkd-vQzf8d');
  for (let i = 0; i < meets.length; i++) {
    const text = '今すぐ参加';
    if (meets[i].innerHTML.includes(text)) {
      meets[i].click();
    }
  }
	"
	do JavaScript theScript in current tab of first window
end tell

最後に参加ボタンを押すスクリプトを追加すれば、自動的にsafariを起動し、googleカレンダーを開いてgoogle meetsの会議に参加することができます!

4.スケジューリング

このワークフローを保存すれば、今後はこのファイルを起動すれば処理が走るようになります。

スクリーンショット 2023-01-26 16.17.15.png

googleカレンダーのイベントに合わせてスケジューリングするには、mac標準のカレンダーにGoogleカレンダーを同期させます。

macのカレンダーアプリを起動し、設定→アカウント→+ボタンをクリックすることで追加できます。

スクリーンショット 2023-01-26 16.19.25.png

同期が完了すればmacのカレンダーにgoogleカレンダーのイベントが追加されています。

イベントをクリック
→通知をカスタム→ファイルを開く→その他のアプリからautomatorで作成したアプリケーションを選択

スクリーンショット 2023-01-26 16.22.50.png

これで自動的に会議に参加することができました!

ちなみに

今回はAppleScirptを使用してブラウザを操作しましたが、AppleScriptの記述を覚えるのが大変でデバッグも面倒でした。

ブラウザの操作は、Automatorで記録することが可能ですし、ブックマークレットでも同じことができます。
しかし、Automatorでの記録は座標がずれてしまう可能性があり、ブックマークを押してくれるような操作は自動化できなかったのでこのような方法を取りました。

javascriptの記述を少し変えるだけでZoomの会議だったり、その他のカレンダーやブラウザからも同じことが可能です。

是非ともこれを参考にオリジナルのスケジューリングを試してみてください!

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?