Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

Safariで表示中のURLをwebarchive保存

Posted on 2月 11, 2018 by Takaaki Naganoya

Safariで表示中の最前面のウィンドウのURLの内容をデスクトップ上にWebarchive書類として保存するAppleScriptです。

webArchiveはDeprecatedになったので、macOS 10.14あたりまでのOSで使うならOK。今後については何か別の機能が実装されるのかどうか。macOS 10.15で別の何かが紹介されるのでしょうか。

AppleScript名:Safariで表示中のURLをwebarchive保存
— Created 2014-11-13 Shane Stanley
— Modified 2018-02-11 Takaaki Naganoya
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "WebKit"

property theSender : missing value
property thePath : missing value
property loadDone : false –original was "webFrame"
property aWebView : missing value

tell application "Safari"
  if (count every document) = 0 then return
  
tell front document
    set aURL to URL
  end tell
end tell

set aPath to (POSIX path of (path to desktop)) & ((current application’s NSUUID’s UUID()’s UUIDString()) as string) & ".webarchive"
set archRes to archivePageToPathWithoutSearching(aURL, aPath, me, 10) of me

on archivePageToPathWithoutSearching(thePageURL, aPath, sender, timeoutSec)
  –Check If this script runs in foreground
  
if not (current application’s NSThread’s isMainThread()) as boolean then
    display alert "This script must be run from the main thread (Command-Control-R in Script Editor)." buttons {"Cancel"} as critical
    
error number -128
  end if
  
  
set my theSender to sender — store main script so we can call back
  
set my thePath to aPath — store path for use later
  
set my aWebView to missing value
  
set my loadDone to false
  
  
— make a WebView
  
set theView to current application’s WebView’s alloc()’s initWithFrame:{origin:{x:0, y:0}, |size|:{width:100, height:100}}
  
  
— tell it call delegate methods on me
  
theView’s setFrameLoadDelegate:me
  
  
— load the page
  
theView’s setMainFrameURL:thePageURL
  
  
–wait for download & saving
  
repeat timeoutSec * 10 times
    if my loadDone is not equal to false then
      exit repeat
    end if
    
delay 0.1
  end repeat
  
if my loadDone = false then return "timed out"
  
  
  
— the main frame is our interest
  
if (my loadDone) = aWebView’s mainFrame() then
    — get the data and write it to file
    
set theArchiveData to (my loadDone)’s dataSource()’s webArchive()’s |data|()
    
theArchiveData’s writeToFile:thePath atomically:true
    
    
— tell our script it’s all done
    
return "The webarchive was saved"
  end if
end archivePageToPathWithoutSearching

— called when our WebView loads a frame
on WebView:curWebView didFinishLoadForFrame:webFrame
  set my loadDone to webFrame
  
set my aWebView to curWebView
end WebView:didFinishLoadForFrame:

— called when there’s a problem
on WebView:WebView didFailLoadWithError:theError forFrame:webFrame
  — got an error, bail
  
WebView’s stopLoading:me
  
set my loadDone to false
  
error "The webarchive was not saved"
end WebView:didFailLoadWithError:forFrame:

★Click Here to Open This Script 

(Visited 209 times, 1 visits today)

More from my site

  • 各種GUI要素なしでSafari上に新規ウィンドウ表示各種GUI要素なしでSafari上に新規ウィンドウ表示
  • YouTubeムービーの状態を取得、操作YouTubeムービーの状態を取得、操作
  • Safariで表示中のWebページの最終更新日時を取得Safariで表示中のWebページの最終更新日時を取得
  • OS X 10.11.5+Safari 9.1.1以降で、新たなAS制限機能が増えるOS X 10.11.5+Safari 9.1.1以降で、新たなAS制限機能が増える
  • Safariのダウンロードフォルダを求める v5Safariのダウンロードフォルダを求める v5
  • Safariで検索を実行Safariで検索を実行
Posted in file Internet Require Control-Command-R to run | Tagged 10.11savvy 10.12savvy 10.13savvy Safari | 3 Comments

3 thoughts on “<span>Safariで表示中のURLをwebarchive保存</span>”

  1. 9/18/19
    5:18 PM
    2019年9月18日
    5:18 PM

    Reply

    コンテンツ中の表示中のエリア座標を取得する – AppleScriptの穴 says:

    […]  (1)表示中のURLを取得して処理  (2)表示中のコンテンツにJavaScriptを実行したりGUI Scripting経由で操作(特定要素をカウントしたりFormに値を入れたりボタンを押したり)  (3 […]

  2. 10/28/19
    8:08 PM
    2019年10月28日
    8:08 PM

    Reply

    shige02 says:

    Naganoyaさん、ご無沙汰しております。
    重松です。
    そこそこの量のページをPDFで保存しないといけないのですが、認証してあるページで、わけのわからないCSSで解析するのも嫌なので、AppleScriptでSafariを操作して保存できないかと思っていて、こちらのコードにたどり着きました。

    早速実行しようと試みたのですが、うちの環境だと、エラーになります。
    Check If this script runs in foreground のところで引っかかります。
    もちろん、Script Editor から Command+R で実行しているんですが。

    環境ですが、OSは10.14.6 (18G103)で、SafariはVersion 13.0.2 (14608.2.40.1.3)、ScriptEditorはVersion 2.11 (203.1), AppleScript 2.7です。

    • 10/28/19
      8:17 PM
      2019年10月28日
      8:17 PM

      Reply

      Takaaki Naganoya says:

      ごぶさたしておりますー。でっかいテレビもお元気でしょうか?(^ー^;
      一応、これはPDFではなくWebArchiveなのですがそこは大丈夫でしょうか。
      最近はAppleScriptもCocoaの機能を直接呼べるようになったので、いろんな凝ったことが(アプリケーションを介在せずに)できるようになってきています。WebKit(WebView)を呼ぶ場合には、メインスレッドでの実行を強制しないといけないので、
      Control-Command-Rで実行してください。同じくmacOS 10.14.6+Safari 13.0.2で実行してみましたが、問題なくデスクトップにWebArchiveを保存できています。

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • AppleScriptによるWebブラウザ自動操縦ガイド
  • macOS 13, Ventura(継続更新)
  • ドラッグ&ドロップ機能の未来?
  • Intel MacとApple Silicon Macの速度差〜画像処理
  • macOS 12.x上のAppleScriptのトラブルまとめ
  • マウスの右クリックメニューをカスタマイズするService Station
  • macOS 12.3 beta 5、ASの障害が解消される(?)
  • PFiddlesoft UI Browserが製品終了に
  • CotEditorで選択範囲の行頭にある数字をリナンバーする v1
  • SF Symbolsを名称で指定してPNG画像化
  • 不可視プロセスで表示したNSAlertを最前面に表示
  • 与えられた自然言語テキストから言語を推測して、指定の性別で、TTSキャラクタを自動選択して読み上げ
  • 新刊発売:AppleScriptによるWebブラウザ自動操縦ガイド
  • macOS 12.3 beta4、まだ直らないASまわりの障害
  • Safariで表示中のYouTubeムービーのサムネイル画像を取得
  • Pixelmator Pro v2.4.1で新機能追加+AppleScriptコマンド追加
  • macOS 12のスクリプトエディタで、Context Menu機能にバグ
  • macOS 12.3上でFinder上で選択中のファイルをそのままオープンできない件
  • SafariでブックマークされたURL一覧を取得
  • 人類史上初、魔導書の観点から書かれたAppleScript入門書「7つの宝珠」シリーズ開始?!

Tags

10.11savvy (1102) 10.12savvy (1243) 10.13savvy (1391) 10.14savvy (586) 10.15savvy (434) 11.0savvy (274) 12.0savvy (166) 13.0savvy (21) CotEditor (60) Finder (47) iTunes (19) Keynote (97) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (21) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (42) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (118) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSUUID (18) NSView (33) NSWorkspace (20) Numbers (55) Pages (35) Safari (40) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKWebView (22) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • 登録
  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • 登録
  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC