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の最前面のウィンドウで表示されているAmazon.co.jpの製品ページへの最短リンクを取得

Posted on 3月 30 by Takaaki Naganoya

Safariの最前面のウィンドウで表示中のamazon.co.jpの製品ページへの最短リンクを取得して、クリップボードに入れるAppleScriptです。動作確認はmacOS 26.4+Safari 26.4で確認しています。添付のアプレットはScript Menuに入れて呼び出しています。

–> Download Enhanced Applet with Framework

Amazon.co.jpの製品URLをWebブラウザのURL欄からコピー&ペーストで取得しようとしても、不要な情報が大量に付加されているため、Blogなどに投稿するのにけっこう苦労します。

そこで、実際に対象の製品ページへのリンクが可能な最短のURL(短縮URLではなく)を作成してクリップボードに入れます。

HTMLの解析については、いつものHTMLReader Framework(https://github.com/nolanw/HTMLReader)を利用しています。そのため、Script DebuggerからExportしたEnhanced Appletとして動作するように想定しています。

正直なところ、やり方はいくつもありますし、プログラム内容もやっつけで書いているので見るに堪えない部分はあるのですが、実際に動作する日常的なScriptなんてこんなもんだろうかと。

本Scriptは、日本のAmazon(amazon.co.jp)のURLを対象に処理していますが、他国のAmazon用に書き換えるのもとくに難しくはありません。

Google Chromeなど他のWebブラウザ用に改変するのもとくに難しくないので、試してみるといいのではないでしょうか。

AppleScript名:最前面に表示中のAmazonのページから製品リンクURLを抽出する_v2.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2026/03/01
—
–  Copyright © 2026 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use framework "HTMLReader" –https://github.com/nolanw/HTMLReader
use scripting additions

property NSString : a reference to current application’s NSString
property NSPredicate : a reference to current application’s NSPredicate
property HTMLDocument : a reference to current application’s HTMLDocument
property NSMutableArray : a reference to current application’s NSMutableArray

–URL Check
set uRes to retURLFromActiveSafariTab() of me
if uRes does not start with "https://www.amazon.co.jp" then return –change each location’s Amazon URL

set aURL to getProductURLFromAmazon() of me
if aURL = "" then return

set bURL to current application’s |NSURL|’s URLWithString:aURL
set aList to bURL’s pathComponents()
aList’s removeObjectAtIndex:1 –2番目のアイテムを削除

set bList to aList as list
set bLen to length of bList
if bLen is not equal to 3 then return

if contents of item 1 of bList is not equal to "/" then return
if contents of item 2 of bList is not equal to "dp" then return

set aScheme to bURL’s |scheme|() as string
set aHost to bURL’s |host|() as string

set resURL to aScheme & "://" & aHost & "/" & (contents of item 2 of bList) & "/" & (contents of item 3 of bList)

set the clipboard to resURL
beep 1

on getProductURLFromAmazon()
  –Get HTML Source
  
set hRes to retHTMLSourceFromActiveSafariTab() of me
  
  
  
set aHTML to current application’s HTMLDocument’s documentWithString:(hRes as string)
  
set linkList to (aHTML’s nodesMatchingSelector:"link")
  
  
log linkList
  
  
repeat with i in (linkList as list)
    set j to contents of i
    
    
set aProp to (j’s attributes’s valueForKeyPath:("rel")) as string
    
    
if aProp = "canonical" then
      set resURL to (j’s attributes’s valueForKeyPath:("href"))
      
return resURL as string
    end if
    
  end repeat
  
  
return ""
end getProductURLFromAmazon

on retHTMLSourceFromActiveSafariTab()
  tell application "Safari"
    if running then
      if (every document) = {} then return false
      
tell front document
        set htmlRes to source
      end tell
    else
      return false
    end if
  end tell
  
  
set aStr to current application’s NSString’s stringWithString:htmlRes
  
set aNFC to (aStr’s precomposedStringWithCanonicalMapping()) as text –Normalize Text
  
return aNFC
end retHTMLSourceFromActiveSafariTab

on retURLFromActiveSafariTab()
  tell application "Safari"
    if running then
      if (every document) = {} then return missing value
      
tell front document
        set htmlRes to URL
      end tell
    else
      return missing value
    end if
  end tell
end retURLFromActiveSafariTab

★Click Here to Open This Script 

(Visited 7 times, 2 visits today)
Posted in URL | Tagged 15.0savvy 26.0savvy Safari | Leave a comment

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

  • macOS 26, Tahoe
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行
  • Script Debuggerがフリーダウンロードで提供されることに
  • AppleScript Dropletのバグっぽい動作が「復活」(macOS 15.5β)
  • macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される
  • Numbersで選択範囲のdateの年を+1する
  • Appleに買収されたPixelmator ProがAppleとしての初アップデート
  • Dock Menu
  • Applicationのactivateを記録する v2
  • シンプルな文字置換
  • Claris FileMaker Pro 2025(v22)がリリースされた
  • macOS 15.5beta5(24F74)でaliasのキャスティングバグが修正された???
  • Apple Creator Studioに含まれるKeynote/Pages/Numbersは新バージョン?
  • macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?
  • macOS(Mac OS X/OS X)上のAppleScriptの歴史
  • 画像をAppleScriptでアスキーアート化
  • NaturalLanguage.frameworkを用いて日本語テキストの形態素解析を行う
  • デフォルトタイトルと重なっているものと指定サイズのものを抽出
  • Adobe InDesignのAppleScript実行エンジンがCarbonからCocoaベースに書き換えられる

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (439) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (172) 26.0savvy (47) CotEditor (68) Finder (53) Keynote (122) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (80) Pages (58) Safari (45) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • 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
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Newt On Project
  • NFC
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • process
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • Scripting Additions
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • Swift
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2026年3月
  • 2026年2月
  • 2026年1月
  • 2025年12月
  • 2025年11月
  • 2025年10月
  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 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