Mit dem Skript ist es möglich:
tell application "Safari"
set urls to URL of every tab of every window
end tell
Beim Ausführen alle URLs von jedem Tab jedes Fensters abrufen (zweidimensionale Liste)
Result:
{{"http://domain1", "http://domain2", ...}, {"http://domain3", "http://domain4", ...}, {...}}
Aber ist es möglich mit:
tell application "Safari"
set (urls & name) to URL of every tab of every window
end tell
um einen Datensatz anstelle einer Liste zu erhalten:
Result:
{{{url: "http://domain1", name: "domain1 - foo"}, {url: "http://domain2", name: "domain2 - bar2"}, {...}}, {{url: "http://domain3", name: "domain3 - foo3"}, {url: "http://domain4", name: "domain4 - bar4"}, {...}}}
Ist es möglich oder sollte ich nur verwenden repeat
?
Es ist nicht möglich, einen Datensatz mit einem einzelnen Objektbezeichner zu erhalten, aber Sie können eine Liste erhalten:
tell application "Safari"
{URL, name} of tabs of windows
end tell
-- {{{"http://url1", "title 1"}, {"http://url2", "title 2"}}}
Für eine Aufzeichnung können Sie eine Wiederholungsschleife verwenden:
set r to {}
tell application "Safari"
repeat with t in tabs of windows
set end of r to {|url|:URL of t, |name|:name of t}
end repeat
end tell
r
-- {{|url|:"http://url1", |name|:"title 1"}, {|url|:"http://url2", |name|:"title 2"}}
statisch
{|safari|: {{|window_1|: {|url|: "http://url1", |name|: "title 1"}, {|url|:"http://url2", |name|:"title 2"}},{|window_2|: {|url|: "http://url3", |name|: "title 3"}, {|url|:"http://url4", |name|:"title 4"}}}}
? Damit ich den Datensatz in json konvertieren könnte (z. B. mitJSON Helper
) und trotzdem eine Safari-Windows-Struktur habe? Ich habe ein Skript für all das geschrieben, um ein String-basiertes (nicht Datensatz-/Listen-basiertes, was ich gerne hätte) zu bekommen, und es sind ungefähr 200 Codezeilen mit 3 Unterroutinen und es sieht selbst für mich hässlich ausstatisch
{|safari|: {|window1|: {{|url1|: "http1", |name1|: "title1"},{|url2|: "http2", |name2|: "title2"},{|url3|: "http3", |name3|: "title3"}}}} & {|safari|: {|window2|: {{|url1|: "http1", |name1|: "title1"},{|url2|: "http2", |name2|: "title2"},{|url3|: "http3", |name3|: "title3"}}}}
es kommt nur: zurück{safari:{window1:{{url1:"http1", name1:"title1"}, {url2:"http2", name2:"title2"}, {url3:"http3", name3:"title3"}}}}
und nicht die gemergte Variante, wo es eine Liste von gibtwindows
statisch
{|safari|: -->{{<-- |window1|: ...
ändert nichtsstatisch
set end of w_l to {|window & "_" & window_i :t_l}
?