Chromeプロファイルを複数作成、起動をしAppleScriptでwindowの位置サイズ指定

macos10.14.5環境でChromeを複数起動を利用しています。


(以下を使用しプロファイルを複数作成し起動)

do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --user-data-dir=/Users/$USER/Library/Application\\ Support/Google/me01 > /dev/null 2>&1 &"


AppleScriptを利用し、サイズや位置を指定したいのですが、いくつか起動したChromeの指定する方法がわからず悩んでます。

これを解くことが出来る方いらっしゃりませんか?


色々と調べてみたんですがあまり詳しくないものでしてご教授頂けると助かります。

どうぞ宜しくお願い致します。


▼現状下記

tell application "System Events"

set app_name to name of first item of (every application process that (frontmost is true))

tell process "Google Chrome"

set win3 to (1st item of (every window that subrole is "AXStandardWindow"))

set position of win3 to {20, 60}

set size of win3 to {700, 800}

end tell

end tell


Mac Pro

投稿日 2019/06/25 23:11

返信
スレッドに付いたマーク ランキングトップの返信

投稿日 2019/06/26 01:02

こんな感じでどうでしょうか。なお、当方は Google Chrome を使ってないので Chromium でテストしました。


tell application "System Events"
    set ids to {}
    set win_size to {600, 800}
    set {p1, p2} to {0, 22}

    repeat with proc in processes
        if name of proc is "Google Chrome" then
            set end of ids to id of proc
        end if
    end repeat

    set n to length of ids
    repeat while n > 0
        tell process id (item n of ids as integer)
            set size of item 1 of (windows whose subrole is "AXStandardWindow") to win_size
            set position of item 1 of (windows whose subrole is "AXStandardWindow") to {p1, p2}
        end tell
        set {p1, p2} to {p1 + 20, p2 + 20}
        set n to n - 1
    end repeat
end tell


返信: 56

2019/07/03 03:31 mNeji への返信

mNejiさんこんばんは。

シェルscriptにお詳しい方でしたので、Chromeの件とは別のご相談というかシェルでこういう事も出来るのかというのを伺ってみたいのですが、よろしいでしょうか?その場合こちらで説明をするのでも問題はないでしょうか?


結構昔からずっとどうにかならないか悩んでた事がありまして、もし可能でしたら頼りたいです。

2019/06/26 21:22 mNeji への返信

Pimanさん、


私もこれから先、長い付き合いになりそうなので、クロームのプロファイルにジャンプするシェルのエイリアスを作ってみました。


で、そこにある「Chrome」がプロファイルらしいのでツリーを撮ってみました、下図;


Pimanさんの場合も、treeを撮ると、他の人に判り易いかも知れませんね。


私としては複数のプロファイル名(A B C1 E C2)とAppleScriptの「ids」変数との対応づけが不思議に思えました:あてずっぽです...。


2019/06/26 21:42 Piman への返信

ええと、C1 と C2 は同一のプロファイルと解釈しましたが、違うのでしょうか?同一だとすると「う」を2回起動するので、お示しのコードでは動かないと思います。


前掲のコードは、do s**** script で「あ」「い」「う」「う」「え」「か」の順番で起動し (プロセスの id の数は6つ)、起動後に「う」の id が自動で一つにまとめられて (id の数が6つから5つに減る) いることを前提として、


System Events でプロセスの id をリスト化 (その際、リストの要素は起動順になるようです - その保証があるのかは分かりませんが...) し、各 id のウインドウのサイズを変更...という処理となってます。


  1. あ -> item 1 of ids -> [A] ウインドウのサイズと位置を設定
  2. い -> item 2 of ids -> [B] ウインドウのサイズと位置を設定
  3. う -> item 3 of ids -> [C] ウインドウのサイズと位置を設定 (C1)、 もう一つのウインドウのサイズと位置を設定 (C2)
  4. え -> item 4 of ids -> [D] ウインドウのサイズと位置を設定
  5. か -> item 5 of ids -> [E] ウインドウのサイズと位置を設定


ということで、Google Chrome の起動の順番で調整することはできませんか?


2019/06/28 20:58 Piman への返信

> 私も昨日は中々難航し、進展しておらず

> ターミナルでどう入力すればいいのか混乱気味です。


キーボード操作はマウス操作より直感的でないので取っ付き難いですが、時間とともに「指と思考」が連動してきて、ある時にとても操作が楽になります。 逆に言えば「マウス」が便利すぎる...。


ps -U ★ | grep '/Application Support/Google/▲' | head -1 | awk '{print $1}'

▲に、ご自分で作ったプロファイル名をいれてください。


上のコマンドの出力は、プロファイル'/Application Support/Google/▲'に対応するpidそのものです。自分のところではあまり多くのプロセスを開いていないのでpidは4桁ですが、Pimanさんのところでは沢山のプロセスが開いていそうですね。


で元に戻ると、正しく★や▲を入力して得られた数字を

「Activity Monitor」で「Google Chrone」のpidと比較していただきたいのです。



echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile

を実行後にターミナルを終了しましたか? 面倒でしたら、Macを再起動してもいいです。



treeが入手できたら、

cdリターン

tree -L 1リターン

と打って見てください。


その結果を体感してから、

tree -L 2リターン

と打ってください。 驚くほど長くなりましたね。


次にGoogleのプロファイル・フォルダに対して;

cd ~/Library/Application\ Support/Googleリターン

tree -L 2リターン

と打ちます。


お疲れの様ですので、1日ぐらいゆっくりするのも一法かも知れません。


2019/06/28 22:43 mNeji への返信

こんにちは、早速試してみました。探り探りですが以下に出力を書き記します。


●以下入力 Chromeのプロファイルは user2 です。

ps -U ★ | grep '/Application Support/Google/user2' | head -1 | awk '{print $1}'

69144


ps -axc | grep 'Google Chrome'

69144 ?? 34:18.59 Google Chrome


(※446〜77897 までずらーっと何行もの出力の中から上記と合う数字の行を抽出してみました。全出力が必要でしたら後ほど記載致します。)



● echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile

については実行後にターミナルを終了しました。Macも再起動してターミナルを開き、brew doctorを入力実行しましたが、Warning: 〜は同じままでした。


●試しに、下記も現状で試してみました。これでWarning:になる手がかりになればアドバイス頂きたいです。

cd ⏎

tree -L 1 ⏎

tree -L 2 ⏎

cd ~/Library/Application\ Support/Google ⏎

-bash: tree: command not found


色々とお手数お掛けしますがご都合のよい時で全然構いませんのでどうぞよろしくお願い致します。

2019/06/29 01:36 Piman への返信

●以下入力 Chromeのプロファイルは user2 です。
ps -U ★ | grep '/Application Support/Google/user2' | head -1 | awk '{print $1}'
69144

ps -axc | grep 'Google Chrome'
69144 ?? 34:18.59 Google Chrome


これならプロファイルuser2に基づいて作られたchromeのpidは正しく認識できたともいます。


当方でも、「Google Chrome.app」「googleScript1.app」「chrome2.app」をスクリプトでオープンして「ps -axc | grep 'Google Chrome' 」を実行すると、3つが順番のpidで見えました。



● echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile
については実行後にターミナルを終了しました。Macも再起動してターミナルを開き、brew doctorを入力実行しましたが、Warning: 〜は同じままでした。


残念なことにHomebrewの入手に失敗している様です。bashユーザでHomebrewをご存知の方からの助言をお持ちください。


●試しに、下記も現状で試してみました。これでWarning:になる手がかりになればアドバイス頂きたいです。
cd ⏎
tree -L 1 ⏎
tree -L 2 ⏎
cd ~/Library/Application\ Support/Google ⏎
-bash: tree: command not found


treeコマンドはHomebrewインストール後に、次のコマンド;

  • brew install tree↩︎

で入手します。今しばらくお待ちください。


👉 でもPimanさんは既に、複数のchromeが準備できているのですから、Homebrewやtreeがなくても、複数のchromeを、数秒程度の時間間隔で立ち上げれば、その順に、「位置とサイズ」を指定すればいい様に思います。これについてはHiro.Sさんにお聞きください。

  • ここで、「数秒程度の時間間隔」と言ったのは「Activity Monitor」で見ている限り、複数のchromeを開いても、一瞬遅れて出てくるように見えるからです。
  • それぞれを開くにはAppleScriptを使うのでしょうから、初めのうちは数秒間隔ぐらいで運用し、徐々に間隔を狭めればと...。

2019/06/30 23:23 Hiro__S への返信

ありがとうございます。

改良版ですかね。助かります!

取り急ぎ「メニューバーにスクリプトメニューを表示」にて、A案,B案をそれぞれAppleScriptにペーストし可動するかを試してみた所、

・何度か実行した中でごくまれに画面中心にウインドウが表示されサイズが書かれた表示のどれかをClickするとその数値通りに可動しました。

・ですがほとんど可動しない状況、手前になにかしらのアプリを前面にし実行し、Chromeが前面に出る反応はあるのですが、個別のウインドウは中々表示されなかったです。何きっかけなのかまではわかりませんでした。

システム環境設定のアクセシビリティへは許可を加えています。


私の方でやり方が間違っているのか、、もし何か方法があれば教えて頂けると助かります。

2019/07/01 00:36 Piman への返信

Piman さんによる書き込み:
ひとまず返信3つ頂き私の方で何をすればよいかよくわかってないのですが、もう少し状況待ってみる形でよろしかったですかね?
おまかせしてしまってる感があり恐縮なのですが、頼ってもよいようでしたら引き続きどうか宜しくお願い致します。

ええと、横から失礼したのは僕の方ですから、お気になさらす。


また、僕はAppleScriptアレルギーなので、シェルスクリプトで書きたいという単純発想で参加しました。


シェルスクリプトでは、「プロファイル名とアクティブなPID」との関連する連想配列(dictionary)に落とし込みたかったので、トライしただけです。

でも、もう少しスマートな方法もありそうだと感じるようになったので、少々検索にはいります、


このトピックが解決した後に、別のトピックを建てられたら、参加しますよ〜。

2019/07/01 21:34 Piman への返信

設置した2ヶ所のファイルそれぞれ、表示されてます。また、Chrome以外のアプリ、FINDERが前面ですと表示はされない状況でした。


これは正しい状態です。


早いタイミングだった場合のみサイズ表記のウインドウが表示される事を確認出来ました。


これがちょっと分かりません。


ーーーーー


当方では下の手順で一応動いてます。ただ、System Events から追いかけるのはあまり良くない方法ですし、アプリの複数起動は Mac 的な方法ではないため、スクリプト処理自体ちょっと無理があるかもしれませんね。


下準備

  1. B案をスクリプトエディタにコピペして、スクリプト形式で下記の場所に保存


~/Scripts/Applications/Google Chrome/xxx.scpt


手順

  1. Google Chrome を起動
  2. 同一プロファイルで複数起動した場合はドックのアプリアイコンが減るまで待つ
  3. Google Chrome の任意のウィンドウをクリックして最前面に持ってくる
  4. メニューバーからスクリプトを実行 => ダイアログが表示される
  5. 位置とサイズを選択して「OK」ボタンを押す => ウインドウのサイズと位置が変更される



ーーーーー


ところで、Google Chrome を複数起動しなければならない理由は何ですか?普通に使えばウインドウの位置はもっと簡単に設定できますよ。


このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Chromeプロファイルを複数作成、起動をしAppleScriptでwindowの位置サイズ指定

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。