Archive for the 'Google Chrome, Chromium' Category

2012/02/14 Google Chromeでpresentation modeを開始、終了

Google Chromeでpresentation mode(全画面表示モード)に移行するAppleScriptです。

chrome1.jpg

Google Chromeの新バージョン(17.x)が出ていたので、アップデートしたところAppleScript用語辞書の内容が追加されており、実際に動くかどうか試してみました。

「enter presentation mode」で全画面モードに入り、「exit presentation mode」で全画面表示を終了します。

About画面からアップデートを行おうとするとサーバーと接続できない、と表示するところは相変わらず。お間抜けさ加減も健在です。

chrome2.jpg

スクリプト名:Google Chromeでpresentation modeを開始、終了
tell application “Google Chrome”
  tell window 1
    enter presentation mode
    
–exit presentation mode
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/07/24 Google Chromeで選択範囲(のテキスト)をコピー

Google Chromeで、最前面のウィンドウの選択中のタブ内で選択中のテキストをコピーするAppleScriptです。

エラー対策にはtry〜end tryあたりでエラートラップを仕掛けておけば大丈夫でしょう。

chrome1.jpg

スクリプト名:Google Chromeで選択範囲(のテキスト)をコピー
tell application “Google Chrome”
  tell window 1
    tell active tab
      copy selection
    end tell
  end tell
end tell

set aRes to the clipboard

–>
(*
“44都道府県、正午に地デジ移行へ=アナログ放送の歴史に幕
 東日本大震災で甚大な被害を受けた岩手、宮城、福島3県を除く44都道府県で24日正午、テレビ番組のアナログ放送が終了し、地上デジタル放送に一斉に移行する。1953年に始まったアナログ放送が58年の歴史に幕を下ろすことになる。25日午前0時には電波送信も停止する。(時事通信)”
*)

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/10/24 Google Chrome for Macがv7.xでAppleScript対応を強化

chrome.jpg

GoogleのWebブラウザ「Google Chrome for Mac」の最新バージョン、7.0.517.41でGoogle Chromium 6.xとほぼ同じレベルのAppleScript対応機能が搭載されました。オープンソース版のChromiumの方が先行してAppleScript強化が行われ、Chromeがそれに追いついた格好です。

Google Chromeは勝手に(サイレントで)オンラインアップデートされるため、このバージョン番号はあくまでも私が確認したものであり、人によって(日によって)異なる可能性があります。

ChromeのAppleScript対応度がChromiumに追いついた……といっても、詳細を調べてみるとまったく同じというわけではありません。

ChromiumとChromeのAppleScript用語辞書をHTMLに書き出して差分(diff)をとってみると、

  Chromium: paste
  Chrome: paste selection

と、paste命令が「paste selection」に変わったことと、ChromiumにはなかったJavascript実行用の「execute」コマンドが搭載されたことが分かりました。

Chromeの「execute」コマンドは、Safariで搭載されている「do JavaScript」コマンドと同じ働きをすることを目指したものと予想されます。これがまともに動作するのであれば、AppleScriptだけではページのローディング完了を厳密に取得できないApple純正のSafariよりも、ChromeのAppleScript対応度が上回ることになります。

さっそく、AppleScriptを書いて試してみましょう。SafariでJavaScript経由でオープン中のページのタイトルを取得するのは、こんな感じです。

スクリプト名:Safariでドキュメントのタイトルを取得
tell application “Safari”
  do JavaScript “document.title” in document 1
end tell
–> “Google”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

一方、Google Chromeはdocumentオブジェクトが存在せず、windowオブジェクトでしか指定できず……さらに、tabを明確に指定しないとエラーになります。いろいろ試してみましたが……

スクリプト名:Chromeでドキュメントのタイトルを取得
tell application “Google Chrome”
  tell window 1
    tell tab 1
      execute javascript “document.title”
    end tell
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

このようなオブジェクト階層に向けてexecute javascriptコマンドを実行するようですが、結果がつねにmissing valueです。

application “Google Chrome”とか、windowに対してexecuteコマンドを実行しても、エラーになるので、これで正しいオブジェクト階層を指定しているように見えるものの……有意な結果が返ってきません。missing valueが返ってくるだけです。

Google Chromeのexecuteコマンドは、まだ実装途中か……あるいは、まともにデバッグせずに公開してしまったもののようです。私は(現時点では)「使えない命令」だと判断しました。

2010/08/14 Chromiumでシークレットウィンドウを新規作成してURLをオープン

Chromiumでシークレットウィンドウを新規作成してURLをオープンするAppleScriptです。

シークレットウィンドウとは、Apple風にいえば「プライベートブラウズ」のことで、どのURLを閲覧したか履歴に残らず、閲覧中のCookieはウィンドウを閉じたあとに破棄されるとのこと。

crm002.jpg
▲シークレットウィンドウ

crm3.jpg
▲ウィンドウの右上に謎の人物が……

スクリプト名:Chromiumでシークレットウィンドウを新規作成してURLをオープン
tell application “Chromium”
  –すべてのウィンドウを閉じる
  
close every window
  
  
–新規ウィンドウを作成
  
set aWin to make new window with properties {mode:“incognito”} –シークレットウィンドウの作成
  
–ダウンロード履歴、閲覧履歴に記録されず、閲覧中のCookieもシークレットウィンドウを閉じたあとには削除される
  
  
tell aWin
    –tab 1にURLを指定
    
tell tab 1
      set URL to “http://piyocast.com/as”
      
      
–指定URLのローディングが終わるまで待つ
      
repeat
        set curStat to loading
        
if curStat = false then exit repeat
        
delay 0.1
      end repeat
      
    end tell
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/08/14 Chromiumでウィンドウを新規作成してURLをオープン

Chromiumでウィンドウを新規作成してURLをオープンするAppleScriptです。

crm001.jpg

URLのローディングが終わるまでループで待っていますが、別にこれは必ず行わなくてはならない処理ではありません。

スクリプト名:Chromiumでウィンドウを新規作成してURLをオープン
tell application “Chromium”
  –すべてのウィンドウを閉じる
  
close every window
  
  
–新規ウィンドウを作成
  
set aWin to make new window with properties {mode:“normal”} –通常ウィンドウの作成
  
tell aWin
    –tab 1にURLを指定
    
tell tab 1
      set URL to “http://piyocast.com/as”
      
      
–指定URLのローディングが終わるまで待つ(必ず待つ必要はない。単なる趣味の問題)
      
repeat
        set curStat to loading
        
if curStat = false then exit repeat
        
delay 0.1 –CPU負荷が上がりすぎることを防ぐために処理待ちしてみた
      end repeat
      
    end tell
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/08/12 Chromiumが最新ビルドでAppleScriptに対応

Google Chromeからグーグルの商標と自動アップデート機構を取り除いたオープンソース版「Chromium」の最新ビルドでAppleScriptに対応したというので、さっそく評価してみました。

chr1.jpg

オブジェクトは、WindowおよびWindowに内包されるTabが主なものです。新規ウィンドウのオープンも、新規タブの作成もできます。ひとつ注意が必要なのは、Windowに対して直接URLを指定することができないこと。Windowの中のtabに対してURLを設定します。

現在アクティブになっているtabの情報も取得できるし、任意のtabをアクティブにすることもできます。

オブジェクトでは、ブックマークへのアクセスが行えるのも特徴です。タイトルやURLを取得でき、ブックマークの階層構造にもアクセスできます。再帰でひととおりのブックマーク内容を取得するのも難しくないでしょう。

あとは、コピーだのペーストだの、戻るだの進むだのといった退屈なコマンドが並んでいますが、重要なのは、「copy selection」コマンドが標準装備されていること。Safariでdo java scriptコマンド経由で選択内容を取得するのに比べれば、非常に常識的です。

Tabのプロパティにローディング中か否かというものがあり、ページの表示完了をこの属性で見分けることが可能です。

ChromiumのAppleScript対応は、ひじょうに常識的なレベルで実現されている……というのが率直な感想です。

ch2.jpg

スクリプト名:Chromiumのコントロール例1
tell application “Chromium”
  properties
  
–> {name:”Chromium”, bookmarks bar:bookmark folder id 1 of application “Chromium”, frontmost:false, class:application, version:”6.0.492.0″, other bookmarks:bookmark folder id 2 of application “Chromium”}
  
  
set wCount to count every window
  
–> 1
  
  
tell window 1
    properties
    
–> {zoomed:false, miniaturized:false, name:”Google”, active tab:tab id 2 of window id 1 of application “Chromium”, mode:”normal”, miniaturizable:true, class:window, closeable:true, resizable:true, visible:true, zoomable:true, id:1, bounds:{19, 22, 928, 1156}, index:1, active tab index:1}
    
    
set tList to count every tab
    
–> 2
    
    
set aTObj to active tab
    
–> tab id 2 of window id 1 of application “Chromium”
    
    
tell active tab
      properties
      
–> {title:”Google”, URL:”http://www.google.co.jp/”, id:2, class:tab, loading:false}
    end tell
    
    
tell tab 1
      properties
      
–> {name:”Google”, URL:”http://www.google.co.jp/”, id:2, class:tab, loading:false}
    end tell
    
    
tell tab 2
      properties
      
–> {name:”Google Chrome について”, URL:”http://tools.google.com/chrome/intl/ja/welcome.html”, id:4, class:tab, loading:false}
    end tell
    
    
–Tabきりかえ
    
set active tab index to 2
    
    
set newTab to (make new tab with properties {URL:“http://piyocast.com/as/”})
    
–> tab id 10 of window id 1 of application “Chromium”
    
    
properties of newTab
    
–> {name:”", URL:”http://piyocast.com/as/”, id:12, class:tab, loading:true}
  end tell
  
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/02/12 Google Chrome for Macの新バージョンβ版が登場

Google Chrome for Macの新バージョン「5.0.307.7 beta」の配布が開始されています。

chrome1.jpg

AppleScript用語辞書に変更は見られません。依然として、Window内部のTabにアクセスできなかったり、Selectionを取得できなかったりという状態です。今後も、Chromeに関してはこの程度のままになる可能性は否定できません。

まして、ApertureのようにAppleScript用語辞書にサンプルAppleScriptが書かれているとかいうこともありません。

2009/10/26 Google Chrome BetaがAppleScriptに対応〜指定URLをオープン

放っておくと勝手に機能がバージョンアップするらしい(?)Google Chrome。

chrome1.jpg

気付いたら、バージョンが上がっていました。そして、このv4.0.223.11では基礎的なAppleScriptの用語辞書が実装され、本Blogで各記事に仕込んでいるようなカスタムURLのクリックも認識するようになりました(初回のみ「ローカルのアプリケーションにリンクを転送するがよいか?」といった確認を求められます。記憶しているかぎりでは、FireFoxと同じ動作です。ちなみに、Mac OS X上のSafariではこのように聞かれることはありません)。

WebブラウザのAppleScript対応機能として期待するものは、

(1)指定URLをオープンする
(2)オープン中のWindow/タブの状態、とくにTitleやURLなどを取得。あるいは個別にクローズしたり生成する。
(3)Webブラウザ上で選択中のテキストを取得する
(4)指定Windowの内容を印刷、もしくはPDFに書き出す
(5)DOM経由で表示中のコンテンツ内容にアクセスする。フォームへの入力を行ったり、Submitボタンを押す
(6)ウィンドウの内容を指定のプリンタに印刷する

といったところ(Safariがこのレベル)。ただし、これから先のことを考えると……

(7)FlashやAJAXのコンテンツへのアクセス(操作)

といった機能も必要になってくることでしょう(このあたりは、Appleの開発チームに方針を質したいところ)。

とりあえず、Google Chromeが「Mac OS X用のWebブラウザとして備えるべき、必要にして最低限のAppleScript用語辞書」を装備したことを確認した次第です。

一応、指定URLをオープンしていますが……Google Chromeの辞書にはOpen URLといった命令が存在していなかったので、open locationの実行アプリケーションをGoogle Chromeに指定して擬似的にURLのオープンを行わせてみたのが下記サンプルです。

ただし、オープン中のWindowのURLやTitleを直接調べるためのオブジェクトはAppleScript用語辞書中で定義されていません(GUI Scripting経由で強引にアクセスすれば取得できます)。

これから先、機能アップにともない命令数が増える可能性があるため、この先もこの記法が正しいという保証はありません。

スクリプト名:Google Chromeで指定URLをオープン
tell application “Google Chrome”
  open location “http://piyo.piyocast.com”
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に