肌酐高什么东西不能吃| 眼睛屈光不正是什么意思| 谷丙转氨酶偏高吃什么药| 生物包括什么| 吃什么代谢快有助于减肥| 单病种是什么意思| 胎儿头围偏大什么原因| 脾虚什么症状| 荨麻疹是什么引起的| 做ct挂什么科| 中性粒细胞高说明什么| 是什么拼音| 增值税是什么| 省内流量是什么意思| 力所能及什么意思| 大便干燥一粒一粒的吃什么药| 尚公主是什么意思| 滑丝是什么意思| 草缸适合养什么鱼| 女生问你喜欢她什么怎么回答| 夏天吃什么菜| 西地那非是什么| 灵芝孢子粉什么时候吃最好| 咽喉疱疹是什么症状| 失足是什么意思| 什么药膏可以去黑头| 缅铃是什么| 黄瓜敷脸有什么好处| 的意思是什么| 肇庆有什么大学| 老年人嗜睡是什么原因| 白头发挂什么科| 霍乱是什么病| 什么叫前列腺钙化| 三月二十六是什么星座| meshor是什么牌子的手表| 不安是什么意思| 梦见死人是什么征兆| 匡威属于什么档次| 舌头肥大是什么原因| 锁骨窝疼可能是什么病| 头顶疼是什么原因引起的| 眼底充血用什么眼药水| 湿疹有什么症状| 为什么叫五七干校| 盆腔积液吃什么药效果好| 尿是什么味道| 吃什么东西能养胃| 内分泌失调吃什么调理| 国防部长什么级别| 弈五行属什么| 巴郎子是什么意思| 蛞蝓是什么| 什么鱼不能吃脑筋急转弯| 3.30是什么星座| 三位一体是什么生肖| 摩羯座的幸运花是什么| 梁伟文 为什么叫林夕| 罴是什么动物| 什么的枝叶| 吃什么食物补钙| 打水光针有什么副作用| betty是什么意思| 石蜡是什么东西| 海为什么是蓝色| 尚清是什么意思| puma是什么牌子| 低密度脂蛋白低是什么原因| 阿玛施属于什么档次| 鱼油对眼睛有什么好处| 黄体功能不全是什么意思| cdf是什么意思| 打葡萄糖点滴有什么用| 豪五行属什么| 鼻子干燥吃什么中成药| 什么是蛋白尿| 鹿晗什么时候回国的| 黄子韬爸爸是干什么的| 建档挂什么科| 杰克琼斯属于什么档次| 湖蓝色配什么颜色好看| 女性阴部潮湿是什么原因| 黄精是什么药材| 食管有烧灼感什么原因| 6月1日是什么星座| 子宫肌层回声欠均匀是什么意思| 间质性改变是什么意思| 生产周期是什么意思| 前列腺炎什么症状| 阻生智齿是什么意思| 梦见母亲去世预示什么| ncu病房是什么意思| 什么是思想| 我想知道为什么| 伤口流水是什么原因| 仟字五行属什么| 白蛋白低是什么意思| 身先士卒是什么意思| 耳呜吃什么药最好| 什么是大三阳和小三阳| 咬指甲是什么心理疾病| 家贼是什么生肖| 陌陌是干什么的| 一个虫一个离念什么| 角是什么结构| 口苦吃什么中成药| 老人吃什么| 明矾和白矾有什么区别| 黄疸肝炎有什么症状| 老鼠喜欢吃什么| 韩国买什么东西划算| 贞操带是什么| 男模什么意思| 妈妈是什么意思呢| 查胃病做什么检查合适| 跑完步头疼是为什么| 18岁属什么的生肖| 梦见刮胡子是什么意思| 去年属什么生肖| 茉莉花是什么颜色| columbia是什么牌子| 尿酸高是什么意思| 下午四点多是什么时辰| 伏特加是什么意思| 胎动突然频繁是什么原因| 什么是象声词| 清浅是什么意思| 嘴唇红是什么原因| 9月16号是什么星座| 为什么听力会下降| 脚臭用什么洗效果最好| 韭菜有什么功效| 阳历九月份是什么星座| 什么猫最贵| 低烧吃什么| 小猫踩奶是什么意思| 任字五行属什么| 浓缩汁是什么意思| 灰蓝色是什么颜色| 2024年属什么生肖| 18岁属什么| 打葡萄糖点滴有什么用| 走路脚后跟疼是什么原因| 谨守是什么意思| 感冒不能吃什么| 惰性是什么意思| 布拉吉是什么| 双侧腋下见淋巴结什么意思| 2020年是什么生肖| 尿毒症有什么症状| 头皮发麻是什么病的前兆| 什么叫色弱| 哮喘吃什么食物好| 千呼万唤是什么生肖| 蓝颜是什么意思| 中暑的症状是什么| 准奏是什么意思| 白血球低是什么原因| 生理性厌恶是什么意思| 中医学学什么| 甘甜是什么意思| 什么样的月亮| 腹股沟疝气挂什么科| 血糖偏高能吃什么水果| 男怕穿靴女怕戴帽什么意思| seconds是什么意思| 人的本性是什么| 肝胃不和吃什么中成药| 为什么健身后体重反而重了| 夜未央什么意思| 靶向是什么意思| 候车是什么意思| 荸荠又叫什么| 长期胃胀气什么原因| 孕妇脚肿是什么原因| 金匮是什么意思| 子宫纵隔什么意思| 草金鱼吃什么| 五行属金什么字最好| 中出是什么| 足踝外科主要看什么| 紫菜不能和什么一起吃| 九月29号是什么星座| 酸菜鱼用什么鱼做好吃| 打酱油是什么意思| 与世无争是什么意思| 里番是什么| 为什么头皮总是很痒| 服兵役是什么意思| 女人的秘密是什么| 为什么会胆汁反流| 全脂乳粉是什么| 秦始皇的真名叫什么| 喜欢吃什么| 伏案什么意思| 刘字五行属什么| 衢是什么意思| 七月13号是什么星座| ic50是什么意思| 小儿急性喉炎吃什么药| 7月14日什么星座| 眼睑痉挛是什么原因造成的| 小孩子经常流鼻血是什么原因| 麻子是什么意思| lxy是什么意思| 肆无忌惮是什么意思| 1977年属蛇是什么命| 老虎油是什么意思| 拜金是什么意思| 肠癌吃什么好| 看心脏病挂什么科| 人为什么会胖| 72年属什么生肖属相| 钾高是什么原因造成的| 宫颈短是什么意思| 思想包袱是什么意思| 什么是过敏体质| 和尚代表什么生肖| 芝士可以做什么美食| 三点水的字和什么有关| 耸肩是什么意思| 行李是什么意思| 客厅沙发后面墙上挂什么画好| 胰腺最怕什么| 心脏问题挂什么科| 脾胃虚弱吃什么食物好| 西地那非有什么副作用| 甜菜根是什么| 什么毛什么血| 为什么低烧比高烧可怕| 皮重是什么意思| 多囊什么意思| 谷草谷丙高是什么原因| 下海的意思是什么| 脾虚痰湿吃什么中成药| 苦瓜汤为什么要放黄豆| 手掌发紫是什么原因| 一个雨一个亏念什么| gdp是什么| 非均匀性脂肪肝是什么意思| 李子不能和什么一起吃| 什么是遴选| 小猫来家里有什么预兆| 1946年属什么生肖属相| 六月初六是什么日子| s代表什么| 医保定点医院是什么意思| 人民币用什么材料做的| 正事是什么意思| 花心什么意思| 胆结石吃什么排石最快| 中焦不通吃什么药| 女生流白带意味着什么| 生机勃勃什么意思| 拉肚子为什么肛门痛| 血脂高吃什么药| 第二天叫什么日| 血窦是什么意思| 游手好闲是什么意思| 类风湿因子高吃什么药| 卡他症状是什么意思| 肾结石什么东西不能吃| 头昏脑胀是什么原因| 鬼怕什么东西| 百度Jump to content

儿科医生究竟有多紧缺?每千名儿童不足一位儿科医生

From Wikipedia, the free encyclopedia
百度 ”权威解读雄安新区如何承接非首都功能疏解?日前,河北省发改委副主任王立忠接受本报记者采访时表示,雄安新区将以良好公共服务积极承接北京非首都功能疏解。

AppleScript
ParadigmNatural language programming, Scripting
DeveloperApple Inc.
First appeared1993; 32 years ago (1993)[1]
Stable release
2.8[2] / October 16, 2014; 10 years ago (2025-08-06)[3]
Typing disciplineWeak, dynamic
OSSystem 7, Mac OS 8, Mac OS 9, macOS
LicenseProprietary (parts available under APSL)
Filename extensions.scpt, .scptd, .applescript
Websitedeveloper.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide
Influenced by
Natural language, HyperTalk

AppleScript is a scripting language created by Apple Inc. that facilitates automated control of Mac applications. First introduced in System 7, it is currently included in macOS in a package of automation tools. The term AppleScript may refer to the scripting language, to a script written in the language, or to the macOS Open Scripting Architecture that underlies the language.[4][5]

AppleScript is primarily a mechanism for driving Apple events – an inter-application communication (IAC) technology that exchanges data between and controls applications.[4][5] Additionally, AppleScript supports basic calculations and text processing, and is extensible via scripting additions that add functions to the language.

AppleScript is tightly bound to the Mac environment, similar to how Windows Script Host is bound to the Windows environment. In other words, AppleScript is not a general purpose scripting language like Python. One way that AppleScript is bound to the unique aspects of its environment is that it relies on applications to publish dictionaries of addressable objects and operations.

As is typical of a command language, AppleScript is not designed to directly perform intensive processing. For example, a script cannot efficiently perform intensive math operations or complicated text processing. However, AppleScript can be used in combination with other tools and technologies which allows it to leverage more efficient programming contexts.

The language has aspects of structured, procedural, object-oriented and natural language programming, but does not strictly conform to any of these paradigms.[5]:?xxvi?

History

[edit]

In the late 1980s, Apple considered using HyperCard's HyperTalk scripting language as the standard language for end-user development across the company and within its classic Mac OS operating system, and for interprocess communication between Apple and non-Apple products.[6] HyperTalk could be used by novices to program a HyperCard stack. Apple engineers recognized that a similar, but more object-oriented scripting language could be designed to be used with any application, and the AppleScript project was born as a spin-off of a research effort to modernize the Macintosh as a whole and finally became part of System 7.[1]

AppleScript was released in October 1993 as part of System 7.1.1 (System 7 Pro, the first major upgrade to System 7).[1] QuarkXPress (ver. 3.2) was one of the first major software applications that supported AppleScript. This, in turn, led to AppleScript being widely adopted within the publishing and prepress world, often tying together complex workflows. This was a key factor in retaining the Macintosh's dominant position in publishing and prepress, even after QuarkXpress and other publishing applications were ported to Microsoft Windows.

After some uncertainty about the future of AppleScript on Apple's next generation OS, the move to Mac OS X (around 2002) and its Cocoa frameworks greatly increased the usefulness and flexibility of AppleScript. Cocoa applications allow application developers to implement basic scriptability for their apps with minimal effort, broadening the number of applications that are directly scriptable. At the same time, the shift to the Unix underpinnings and AppleScript's ability to run Unix commands directly, with the do shell script command,[7] allowed AppleScripts much greater control over the operating system itself.[5]:?863? AppleScript Studio, released with Mac OS X 10.2 as part of Xcode, and later AppleScriptObjC framework, released in Mac OS X 10.6, allowed users to build Cocoa applications using AppleScript.[5]:?969?

In a 2006 article, Macworld included AppleScript among its rankings of Apple's 30 most significant products to date, placing it at #17.[8]

In a 2013 article for Macworld, veteran Mac software developer and commentator John Gruber concluded his reflection on "the unlikely persistence of AppleScript" by noting: "In theory, AppleScript could be much better; in practice, though, it's the best thing we have that works. It exemplifies the Mac's advantages over iOS for tinkerers and advanced users."[9]

In October 2016, longtime AppleScript product manager and automation evangelist Sal Soghoian left Apple when his position was eliminated "for business reasons".[10] Veterans in the Mac community such as John Gruber and Andy Ihnatko generally responded with concern, questioning Apple's commitment to the developer community and pro users.[11] Apple senior vice president of software engineering Craig Federighi responded in an email saying that "We have every intent to continue our support for the great automation technologies in macOS!", though Jeff Gamet at The Mac Observer opined that it did little to assuage his doubt about the future of Apple automation in general and AppleScript in particular.[12] For the time being, AppleScript remains one component of macOS automation technologies, along with Automator, Shortcuts, Services, and shell scripting.

Intent

[edit]

AppleScript was designed to be used as an accessible end-user scripting language, offering users an intelligent mechanism to control applications, and to access and modify data and documents. AppleScript uses Apple events, a set of standardized data formats that the Macintosh operating system uses to send information to applications, roughly analogous to sending XPath queries over XML-RPC in the world of web services.[5]:?xxvi? Apple events allow a script to work with multiple applications simultaneously, passing data between them so that complex tasks can be accomplished without human interaction.[4] For example, an AppleScript to create a simple web gallery might do the following:

  1. Open a photo in a photo-editing application (by sending that application an Open File Apple event).
  2. Tell the photo-editing application to manipulate the image (e.g. reduce its resolution, add a border, add a photo credit)
  3. Tell the photo-editing application to save the changed image in a file in some different folder (by sending that application a Save and/or Close Apple event).
  4. Send the new file path (via another Apple event) to a text editor or web editor application.
  5. Tell that editor application to write a link for the photo into an HTML file.
  6. Repeat the above steps for an entire folder of images (hundreds or even thousands of photos).
  7. Upload the HTML file and folder of revised photos to a website, by sending Apple events to a graphical FTP client, by using built-in AppleScript commands, or by sending Apple events to Unix FTP utilities.

For the user, hundreds or thousands of steps in multiple applications have been reduced to the single act of running the script, and the task is accomplished in much less time and with no possibility of random human error. A large complex script could be developed to run only once, while other scripts are used again and again.

An application's scriptable elements are visible in the application's Scripting Dictionary (distributed as part of the application), which can be viewed in any script editor. Elements are generally grouped into suites, according to loose functional relationships between them. There are two basic kinds of elements present in any suite: classes and commands.

  • Classes are scriptable objects—for example, a text editing application will almost certainly have classes for windows, documents, and texts—and these classes will have properties that can be changed (window size, document background color, text font size, etc.), and may contain other classes (a window will contain one or more documents, a document will contain text, a text object will contain paragraphs and words and characters).
  • Commands, by contrast, are instructions that can be given to scriptable objects. The general format for a block of AppleScript is to tell a scriptable object to run a command.

All scriptable applications share a few basic commands and objects, usually called the Standard Suite—commands to open, close or save a file, to print something, to quit, to set data to variables—as well as a basic application object that gives the scriptable properties of the application itself. Many applications have numerous suites capable of performing any task the application itself can perform. In exceptional cases, applications may support plugins which include their own scripting dictionaries.

AppleScript was designed with the ability to build scripts intuitively by recording user actions. Such AppleScript recordability has to be engineered into the app—the app must support Apple events and AppleScript recording;[13] as Finder supports AppleScript recording, it can be useful for reference. When AppleScript Editor (Script Editor) is open and the Record button clicked, user actions for recordable apps are converted to their equivalent AppleScript commands and output to the Script Editor window. The resulting script can be saved and re-run to duplicate the original actions, or modified to be more generally useful.

Natural language metaphor

[edit]

Whereas Apple events are a way to send messages into applications, AppleScript is a particular language designed to send Apple events. In keeping with the objective of ease-of-use for beginners, the AppleScript language is designed on the natural language metaphor, just as the graphical user interface is designed on the desktop metaphor. A well-written AppleScript should be clear enough to be read and understood by anyone, and easily edited. The language is based largely on HyperCard's HyperTalk language, extended to refer not only to the HyperCard world of cards and stacks, but also theoretically to any document. To this end, the AppleScript team introduced the AppleEvent Object Model (AEOM), which specifies the objects any particular application "knows".

The heart of the AppleScript language is the use of terms that act as nouns and verbs that can be combined. For example, rather than a different verb to print a page, document or range of pages (such as printPage, printDocument, printRange), AppleScript uses a single "print" verb which can be combined with an object, such as a page, a document or a range of pages.

print page 1

print document 2

print pages 1 thru 5 of document 2

Generally, AEOM defines a number of objects—like "document" or "paragraph"—and corresponding actions—like "cut" and "close". The system also defines ways to refer to properties of objects, so one can refer to the "third paragraph of the document 'Good Day'", or the "color of the last word of the front window". AEOM uses an application dictionary to associate the Apple events with human-readable terms, allowing the translation back and forth between human-readable AppleScript and bytecode Apple events. To discover what elements of a program are scriptable, dictionaries for supported applications may be viewed. (In the Xcode and Script Editor applications, this is under File → Open Dictionary.)

To designate which application is meant to be the target of such a message, AppleScript uses a "tell" construct:

tell application "Microsoft Word"
  quit
end tell

Alternatively, the tell may be expressed in one line by using an infinitive:

tell application "Microsoft Word" to quit

For events in the "Core Suite" (activate, open, reopen, close, print, and quit), the application may be supplied as the direct object to transitive commands:

quit application "Microsoft Word"

The concept of an object hierarchy can be expressed using nested blocks:

tell application "QuarkXPress"
  tell document 1
    tell page 2
      tell text box 1
        set word 5 to "Apple"
      end tell
    end tell
  end tell
end tell

The concept of an object hierarchy can also be expressed using either nested prepositional phrases or a series of possessives:

pixel 7 of row 3 of TIFF image "my bitmap"
TIFF image "my bitmap"'s 3rd row's 7th pixel

which in another programming language might be expressed as sequential method calls, like in this pseudocode:

getTIFF("my bitmap").getRow(3).getPixel(7);

AppleScript includes syntax for ordinal counting, "the first paragraph", as well as cardinal, "paragraph one". Likewise, the numbers themselves can be referred to as text or numerically, "five", "fifth" and "5" are all supported; they are synonyms in AppleScript. Also, the word "the" can legally be used anywhere in the script in order to enhance readability: it has no effect on the functionality of the script.

Examples

[edit]

Hello, world!

[edit]

A "Hello, World!" program can be written as a single line. To show a modal window with "OK" and "Cancel" buttons:

display dialog "Hello, world!"

To show a modal window with an "OK" button and an alert icon:

display alert "Hello, world!"

To output audio using a synthesized voice:

say "Hello, world!"

Failsafe calculator

[edit]
tell application "Finder"
	-- Set variables
	set the1 to text returned of (display dialog "1st" default answer "Number here" buttons {"Continue"} default button 1)
	set the2 to text returned of (display dialog "2nd" default answer "Number here" buttons {"Continue"} default button 1)
	try
		set the1 to the1 as integer
		set the2 to the2 as integer
	on error
		display dialog "You may only input numbers into a calculator." with title "ERROR" buttons {"OK"} default button 1
		return
	end try
	
	-- Add?
	if the button returned of (display dialog "Add?" buttons {"No", "Yes"} default button 2) is "Yes" then
		set ans to (the1 + the2)
		display dialog ans with title "Answer" buttons {"OK"} default button 1
		say ans
	-- Subtract?	
	else if the button returned of (display dialog "Subtract?" buttons {"No", "Yes"} default button 2) is "Yes" then
		set ans to (the1 - the2)
		display dialog ans with title "Answer" buttons {"OK"} default button 1
		say ans
	-- Multiply?	
	else if the button returned of (display dialog "Multiply?" buttons {"No", "Yes"} default button 2) is "Yes" then
		set ans to (the1 * the2)
		display dialog ans with title "Answer" buttons {"OK"} default button 1
		say ans
	-- Divide?	
	else if the button returned of (display dialog "Divide?" buttons {"No", "Yes"} default button 2) is "Yes" then
		set ans to (the1 / the2)
		display dialog ans with title "Answer" buttons {"OK"} default button 1
		say ans
	else
		delay 1
		say "You haven't selected a function. The operation has cancelled."
	end if
	
end tell

Drive login

[edit]

This script controls the Finder application to login with username "John" and password "app123":

tell application "Finder"
	set passAns to "app123"
	set userAns to "John"
	if the text returned of (display dialog "Username" default answer "") is userAns then
		display dialog "Correct" buttons {"Continue"} default button 1
		if the text returned of (display dialog "Username : John" & return & "Password" default answer "" buttons {"Continue"} default button 1 with hidden answer) is passAns then
			display dialog "Access granted" buttons {"OK"} default button 1
		else
			display dialog "Incorrect password" buttons {"OK"} default button 1
		end if
	else
		display dialog "Incorrect username" buttons {"OK"} default button 1
	end if
end tell

Development tools

[edit]

Script editors

[edit]

The development tools below provide a programing environment for scripting with AppleScript – supporting composing, validating, compiling, running and debugging scripts. Some also provide for listing AppleScript dictionaries, saving scripts in a number of formats, syntax highlighting and inserting code snippets.

AppleScript Editor
An editor from Apple packaged with macOS, called AppleScript Editor in Mac OS X Snow Leopard (10.6) through OS X Mavericks (10.9) and Script Editor in all earlier and later versions of macOS. Scripts are written in document editing windows where they can be compiled and run, and these windows contain various panes in which logged information, execution results, and other information is available for debugging purposes. Access to scripting dictionaries and prewritten code snippets is available through the application menus. Since OS X Yosemite (10.10), Script Editor includes the ability to write in both AppleScript and JavaScript.[14]
Xcode
A suite of tools from Apple for developing applications with features for editing scripts and creating standalone applications written in AppleScript.
Script Debugger
A commercial IDE from Late Night Software, Script Debugger is a relatively advanced AppleScript environment that allows the script writer to debug AppleScripts via single stepping, breakpoints, stepping in and out of functions/subroutines, variable tracking, etc. Script Debugger also contains an advanced dictionary browser that allows the user to see the dictionary in action in real world situations. That is, rather than just a listing of what the dictionary covers, one can open a document in Pages, for example, and see how the dictionary's terms apply to that document, making it easier to determine which parts of the dictionary to use. Script Debugger is not designed to create scripts with a GUI, other than basic alerts and dialogs, but is focused more on the coding and debugging of scripts.
Smile and SmileLab
A third-party freeware/commercial IDE for AppleScript, itself written entirely in AppleScript.[15] Smile is free, and primarily designed for AppleScript development. SmileLab is commercial software with extensive additions for numerical analysis, graphing, machine automation and web production. Smile and SmileLab use an assortment of different windows—AppleScript windows for running and saving full scripts, AppleScript terminals for testing code line-by-line, unicode windows for working with text and XML. Users can create complex interfaces—called dialogs—for situations where the built-in dialogs in AppleScript are insufficient.
ASObjC Explorer 4
A discontinued commercial IDE from Shane Stanley for AppleScript, especially for AppleScriptObjC.[16] The main feature is Cocoa-object/event logging, debugging and code-completion. Users can read Cocoa events and objects like other scriptable applications. This tool was originally built for AppleScript Libraries (available in OS X Mavericks). AppleScript Libraries aims for re-usable AppleScript components and supports built-in AppleScript dictionary (sdef). ASObjC Explorer 4 can be an external Xcode script editor, too.
FaceSpan
A discontinued commercial IDE from Late Night Software for creating AppleScript applications with graphic user interfaces.[17]

Script launchers

[edit]

For development and ad hoc scenarios, a script can be run from a script editor, but to support automation a script must run without opening another application. There are a number of options for doing so:

Applets
AppleScripts can be saved from a script editor as applications (called applets, or droplets when they accept input via drag and drop).[5]:?69? Applets can be run from the Dock, from the toolbar of Finder windows, from Spotlight, from third-party application launchers, or from any other place where applications can be run.
Folder actions
Using AppleScript folder actions, scripts can be launched when specific changes occur in folders (such as adding or removing files).[18] Folder actions can be assigned by clicking on a folder and choosing Folder Actions Setup... from the contextual menu; the location of this command differs slightly in Mac OS X 10.6.x from earlier versions. This same action can be achieved with third-party utilities such as Hazel.[19]
Hotkey launchers
Keyboard shortcuts can be assigned to AppleScripts in the script menu using the Keyboard & Mouse Settings Preference Pane in System Preferences. In addition, various third-party utilities are available—Alfred,[20] FastScripts,[21] Keyboard Maestro,[22] QuicKeys,[23] Quicksilver,[24] TextExpander[25]—which can run AppleScripts on demand using key combinations.
Script menu
This system-wide menu provides access to AppleScripts from the macOS menu bar, visible no matter what application is running.[26] (In addition, many Apple applications, some third-party applications, and some add-ons provide their own script menus. These may be activated in different ways, but all function in essentially the same manner.) Selecting a script in the script menu launches it. Since Mac OS X 10.6.x, the system-wide script menu can be enabled from the preferences of Script Editor; in prior versions of Mac OS X, it could be enabled from the AppleScript Utility application. When first enabled, the script menu displays a default library of fairly generic, functional AppleScripts, which can also be opened in Script Editor and used as examples for learning AppleScript. Scripts can be organized so that they only appear in the menu when particular applications are in the foreground.
Unix command line and launchd
AppleScripts can be run from the Unix command line, or from launchd for scheduled tasks,[5]:?716? by using the osascript command line tool.[27] The osascript tool can run compiled scripts (.scpt files) and plain text files (.applescript files—these are compiled by the tool at runtime). Script applications can be run using the Unix open command.

Resources

[edit]

AppleScript Libraries

[edit]

Re-usable AppleScript modules (available since OS X Mavericks), written in AppleScript or AppleScriptObjC and saved as script files or bundles in certain locations,[28] that can be called from other scripts. When saved as a bundle, a library can include an AppleScript dictionary (sdef) file,[29] thus functioning like a scripting addition but written in AppleScript or AppleScriptObjC.

AppleScript Studio

[edit]

A framework for attaching Cocoa interfaces to AppleScript applications, part of the Xcode package in Mac OS X 10.4 and 10.5, now deprecated in favor of AppleScriptObjC.[30]:?438?

AppleScriptObjC

[edit]

A Cocoa development software framework, also called AppleScript/Objective-C or ASOC,[31] part of the Xcode package since Mac OS X Snow Leopard.[32] AppleScriptObjC allows AppleScripts to use Cocoa classes and methods directly.[33] The following table shows the availability of AppleScriptObjC in various versions of macOS:[34]

Where AppleScriptObjC can be used in each macOS version
OS version In Xcode In applets In AppleScript
Libraries
In Script Editor
10.6 Yes
10.7 Yes Yes
10.8 Yes Yes
10.9 Yes Yes Yes
10.10 Yes Yes Yes Yes

AppleScriptObjC can be used in all subsequent Mac OS X versions.

Automator

[edit]

A graphical, modular editing environment in which workflows are built up from actions. It is intended to duplicate many of the functions of AppleScript without the necessity for programming knowledge. Automator has an action specifically designed to contain and run AppleScripts, for tasks that are too complex for Automator's simplified framework.[35]

Scriptable core system applications

[edit]

These background-only applications, packaged with macOS, are used to allow AppleScript to access features that would not normally be scriptable. As of Mac OS X 10.6.3 they include the scriptable applications for:

  • VoiceOver (scriptable auditory and braille screen reader package)
  • System Events (control of non-scriptable applications and access to certain system functions and basic file operations)
  • Printer Setup Utility (scriptable utility for handling print jobs)
  • Image Events (core image manipulation)
  • HelpViewer (scriptable utility for showing help displays)
  • Database Events (minimal SQLite3 database interface)
  • AppleScript Utility (for scripting a few AppleScript related preferences)

Scripting Additions (OSAX)

[edit]

Plug-ins for AppleScript developed by Apple or third parties.[36] They are designed to extend the built-in command set, expanding AppleScript's features and making it somewhat less dependent on functionality provided by applications. macOS includes a collection of scripting additions referred to as Standard Additions (StandardAdditions.osax) that adds a set of commands and classes that are not part of AppleScript's core features, including user interaction dialogs, reading and writing files, file system commands, date functions, and text and mathematical operations; without this OSAX, AppleScript would have no capacity to perform many basic actions not directly provided by an application.

Language

[edit]

Typing

[edit]

Variables are not strictly typed, and do not need to be declared. Variables can take any data type (including scripts and functions). For example:

-- create an integer variable called variable1
set variable1 to 1

-- create a text variable called variable2
set variable2 to "Hello" 

-- create a list variable called variable3
copy {17, "doubleday"} to variable3 

-- copy the list items of variable3 into separate variables variable4 and variable5
set {variable4, variable5} to variable3 

-- set a variable to an instance of a script
set variable6 to script myScript

Scoping

[edit]

A subroutines cannot be called directly from an application tell block. Use of my or of me is required.

tell application "Finder"
    set x to my myHandler()
    -- or
    set x to myHandler() of me
end tell

on myHandler()
    --commands
end myHandler

Using the same technique for scripting addition commands can reduce errors and improve performance.

tell application "Finder"
	set anyNumber to my (random number from 5 to 50)
end tell

Types and objects

[edit]

A script can define custom data types, or use one of the many built-in classes and objects which are provided by the language and tend to be recognized by scriptable applications. Notable built-in types and objects include:

Basic objects
  • application: used mostly as a specifier for tell statements (tell application "Finder" …)
  • script: script objects are containers for scripts; every AppleScript creates a script object when run, and script objects may be created within AppleScripts
  • class: meta-object that specifies the type of other objects
  • reference: object that encapsulates an unevaluated object specifier that may or may not point to a valid object; can be evaluated on-demand by accessing its contents property
Standard data objects
  • constant: constant value; language-defined constants include pi, tab and linefeed
  • boolean: Boolean (true/false) value; subclass of constant
  • number: abstract superclass of integer and real; rarely used directly
  • integer: integer; can be manipulated with built-in mathematical operators
  • real: floating-point (real) number; can be manipulated with built-in mathematical operators
  • date: date and time
  • text: before AppleScript 2.0 (Mac OS X 10.4 and below) the text class was distinct from string and Unicode text, and the three behaved somewhat differently; in 2.0 (10.5) and later, they are all synonyms and all text is handled as UTF-16[37]
Containers
  • list: ordered list of objects; can contain any class, including other lists and classes defined by applications
  • record: keyed list of objects; like a list, except structured as key–value pairs; runtime keyed access is unsupported; all keys must be compile-time constant identifiers
File system
  • alias: reference to an existing file system object (file or folder); maintains link to file system object if moved or renamed
  • file: reference to a file system object; can can refer to an object that does not exist
  • POSIX file: reference to a file system object, in plain text, using Unix (POSIX)-style slash (/) notation; not a true data type, as AppleScript automatically converts a POSIX file to an ordinary file[38]
Miscellaneous
  • RGB color: specifies an RGB triplet (in 16-bit high color format), for use in commands and objects that work with colors
  • unit types: converts between standard units; for instance, a value can be defined as square yards, then converted to square feet by casting between unit types using the as operator

Block

[edit]

AppleScript supports compound statement code structure via either single or multiple line syntax. The multiple line syntax ends a code block with a phrase that like end keyword where keyword is the statement keyword at the start of the block. For example:

-- Simple form
tell application "Safari" to activate

-- Compound
tell application "MyApp"
     -- commands for app
end tell

Script

[edit]

A script object is full object – encapsulating methods and data and inheriting data and behavior from a parent script. Script objects can use the same 'tell' constructs that are used for application objects and can be loaded from and saved to files. Runtime performance can be enhanced in some cases by using script objects. A script object is defined as:

script scriptName
     -- commands and handlers specific to the script
end script

Loop

[edit]

The loop construct has multiple variations; all using the keyword repeat. The loop can be exited via exit repeat.

Unconditional
repeat
     -- commands to be repeated
end repeat
Repeat a number of times
repeat 10 times
     -- commands to be repeated
end repeat
Conditional

For repeat while, the block is executed as long as a condition evaluates to true. The repeat until loop is the same except that the block is executed as long as the condition evaluates to false.

set x to 5
repeat while x > 0
     set x to x - 1
end repeat

set x to 5
repeat until x  0
     set x to x - 1
end repeat
With a variable

A variable is initialized to a value and after each execution of the block, the variable is incremented by the step value; 1 if not specified.

-- repeat the block 2000 times, i gets all values from 1 to 2000
repeat with i from 1 to 2000
     -- commands to be repeated
end repeat

-- repeat the block 4 times, i gets values 100, 75, 50 and 25
repeat with i from 100 to 25 by -25
    -- commands to be repeated 
end repeat
Enumerate

A variable has the value of each list item as the loop progresses.

set total to 0
repeat with loopVariable in {1, 2, 3, 4, 5}
	set total to total + loopVariable
end repeat

Handler

[edit]

A handler, a variation of the block structure defines a subroutine.

Function handler
on myFunction(parameters...)
     -- subroutine commands 
end myFunction
Folder actions block
on adding folder items to thisFolder after receiving theseItems
     -- commands to apply to the folder or items 	
end adding folder items to
Run handler
on run
     -- commands
end run

Handlers can also be defined using "to" in place of "on" and can be written to accept labeled parameters, not enclosed in parens.

Handler with labeled parameters
on rock around the clock
	display dialog (clock as string)
end rock
-- called with:
rock around the current date
Handler using "to" and labeled parameters
to check for yourNumber from bottom thru top
	if bottom  yourNumber and yourNumber  top then
		display dialog "Congratulations! You scored."
	end if
end check
--called with:
check for 8 from 7 thru 10

There are four types of predefined handlers in AppleScript—run, open, idle, and quit—each of which is created in the same way as the run handler shown above.

Run handler
Defines the main code of the script, which is called when the script is run. Run handler blocks are optional, unless arguments are being passed to the script. If an explicit run handler block is omitted, then all code that is not contained inside handler blocks is executed as though it were in an implicit run handler.
Open handler
Defined using "on open theItems".
on open theItems
     repeat with thisItem in theItems
         tell application "Finder" to update thisItem
     end repeat 
end open

When a script containing an "open handler' is saved as an applet, the applet becomes a droplet. A droplet can be identified in the Finder by its icon, which includes an arrow, indicating items can be dropped onto the icon. The droplet's open handler is executed when files or folders are dropped onto droplet's icon. References to the items dropped on the droplet's icon are passed to the droplet's script as the parameter of the open handler. A droplet can also be launched the same way as an ordinary applet, executing its run handler.

Idle handler
A subroutine that is run periodically by the system when the application is idle.
on idle
     --code to execute when the script's execution has completed
  return 60 -- number of seconds to pause before executing idle handler again
end idle

An idle handler can be used in applets or droplets saved as stay-open applets, and is useful for scripts that watch for particular data or events. The length of the idle time is 30 seconds by default,[39] but can be changed by including a 'return x' statement at the end of the subroutine, where x is the number of seconds the system should wait before running the handler again.

Quit handler
A handler that is run when the applet receives a Quit request. This can be used to save data or do other ending tasks before quitting.
on quit
     --commands to execute before the script quits
  continue quit -- required for the script to actually quit
end quit

Comment

[edit]

A comment can be formatted various ways. A line comment begins with -- or alternatively in later versions (AppleScript 2.0, first released in Mac OS X Leopard) with #. The latter permits an AppleScript script to run as an executable if it begins with a shebang line #!/usr/bin/osascript. For example:

--This is a line comment
# So is this! (in later versions)

A block comment (can be multiple lines) is delimited by (* and *). For example:

(* This is a
multiple
line
comment *)

User interaction

[edit]

AppleScript has several user interface options, including dialogs, alerts, and list of choices. (The character, produced by typing ? Option+return in the Script Editor, denotes continuation of a single statement across multiple lines.)

-- Dialog
set dialogReply to display dialog "Dialog Text"
	default answer "Text Answer"
	hidden answer false
	buttons {"Skip", "Okay", "Cancel"}
	default button "Okay"
	cancel button "Skip"
	with title "Dialog Window Title"
	with icon note
	giving up after 15
-- Choose from list
set chosenListItem to choose from list {"A", "B", "3"}
	with title "List Title"
	with prompt "Prompt Text"
	default items "B"
	OK button name "Looks Good!"
	cancel button name "Nope, try again"
	multiple selections allowed false
	with empty selection allowed
-- Alert
set resultAlertReply to display alert "Alert Text"
	as warning
	buttons {"Skip", "Okay", "Cancel"}
	default button 2
	cancel button 1
	giving up after 2

Each user interaction method can return the values of buttons clicked, items chosen or text entered for further processing. For example:

display alert "Hello, world!" buttons {"Rudely decline", "Happily accept"}
set theAnswer to button returned of the result
if theAnswer is "Happily accept" then
	beep 5
else
	say "Piffle!"
end if

Open Scripting Architecture

[edit]

Apple provides the Open Scripting Architecture (OSA) for other scripting languages and third-party scripting/automation products (such as QuicKeys and UserLand Frontier) to function on an equal status with AppleScript. AppleScript is implemented as a component of Component Manager, and the basic specs for interfacing such components to the OSA are public, allowing other developers to add their own scripting components to the system. Public client APIs for loading, saving and compiling scripts work the same for all such components, which means that applets and droplets can hold scripts in any of those scripting languages.[40]

One feature of the OSA is scripting additions, or OSAX for Open Scripting Architecture eXtension,[36] which were inspired by HyperCard's External Commands. Scripting additions are libraries that allow programmers to extend the function of AppleScript. Commands included as scripting additions are available system-wide, and are not dependent on an application (see also § AppleScript Libraries). The AppleScript Editor is also able to directly edit and run some of the OSA languages.

JavaScript for Automation

[edit]

Under OS X Yosemite and later versions of macOS, the JavaScript for Automation (JXA) component remains the only serious OSA language alternative to AppleScript,[14] though the Macintosh versions of Perl, Python, Ruby, and Tcl all support native means of working with Apple events without being OSA components.[30]:?516?

JXA also provides an Objective-C (and C language) foreign language interface.[14] Being an environment based on WebKit's JavaScriptCore engine, the JavaScript feature set is in sync with the system Safari browser engine. JXA provides a JavaScript module system and it is also possible to use CommonJS modules via browserify.[41]

See also

[edit]
  • ARexx – Interpreter for the Rexx language on an Amiga computer

References

[edit]
  1. ^ a b c Cook, William (2007). "AppleScript" (PDF). Proceedings of the third ACM SIGPLAN conference on History of programming languages. Association for Computing Machinery. pp. 1–21. doi:10.1145/1238844.1238845. ISBN 9781595937667. S2CID 220938191.
  2. ^ Apple Inc. (2022). Script Editor (Version 2.11). Retrieved November 11, 2022.
  3. ^ "OS X 10.10 Yosemite release date". October 16, 2014. Retrieved November 16, 2014.
  4. ^ a b c Goldstein, Adam (2005). AppleScript: the missing manual. Sebastopol, CA: O'Reilly Media. ISBN 0596008503. OCLC 56912218.
  5. ^ a b c d e f g h Sanderson, Hamish; Rosenthal, Hanaan (2009). "Interacting with the Unix Command Line". Learn AppleScript (3rd ed.). Berkeley: Apress. pp. 863–896. doi:10.1007/978-1-4302-2362-7_27. ISBN 9781430223610. OCLC 308193726.
  6. ^ Flynn, Laurie (February 27, 1989). "Apple Ponders Standardizing on HyperTalk". InfoWorld. Vol. 11, no. 9. p. 31.
  7. ^ "AppleScript Language Guide commands reference: do shell script". developer.apple.com. Retrieved September 15, 2019.
  8. ^ "Apple's greatest hits: 30 significant products". macworld.com. Retrieved September 12, 2019.
  9. ^ Gruber, John (March 2013). "The unlikely persistence of AppleScript". Macworld. 30 (3): 100.
  10. ^ Lovejoy, Ben (November 17, 2016). "Sal Soghoian says 'ask Apple' about future of Mac user automation as company eliminates position". 9to5mac.com. Retrieved May 8, 2017.
  11. ^ Evans, Jonny (November 17, 2016). "Does Apple really want to kill Automator, AppleScript? Shock termination of veteran Apple developer guru sends shockwaves across the Mac community". Computerworld.com. Retrieved May 8, 2017.
  12. ^ Gamet, Jeff (November 23, 2016). "Apple's intent isn't the same as committing to mac automation". macobserver.com. Retrieved May 8, 2017.
  13. ^ "Scriptable Applications". developer.apple.com. Retrieved July 26, 2018.
  14. ^ a b c Siracusa, John (October 16, 2014). "OS X 10.10 Yosemite: The Ars Technica Review: JavaScript automation". Ars Technica. Retrieved May 8, 2017.
  15. ^ "Smile and SmileLab Home Page". satimage.fr. Retrieved May 8, 2017.
  16. ^ "ASObjC Explorer 4 Discontinued". macosxautomation.com. Archived from the original on June 21, 2017. Retrieved May 8, 2017.
  17. ^ "Mark Alldritt's Journal ? FaceSpan". blog.latenightsw.com. Retrieved May 8, 2017.
  18. ^ "AppleScript Language Guide: Folder Actions Reference". developer.apple.com. Retrieved May 8, 2017.
  19. ^ Miller, Dan (December 22, 2010). "Capsule review: Hazel 2.3". Macworld.com. Retrieved May 8, 2017.
  20. ^ Beam, Brian (February 10, 2015). "Alfred review: This Mac app launcher continues to shine, but Alfred Remote doesn't stack up". Macworld.com. Retrieved May 10, 2017.
  21. ^ Frakes, Dan (June 2, 2011). "Capsule review: FastScripts 2.5". Macworld.com. Retrieved May 8, 2017.
  22. ^ Breen, Christopher (June 4, 2013). "Mac Gems: Keyboard Maestro 6 is a genius at repetitive tasks". Macworld.com. Retrieved May 10, 2017.
  23. ^ Breen, Christopher (May 7, 2010). "Capsule review: QuicKeys 4". Macworld.com. Retrieved May 8, 2017.
  24. ^ "AppleScripts – Quicksilver Wiki". qsapp.com. Retrieved May 10, 2017.
  25. ^ Fleishman, Glenn (June 12, 2015). "TextExpander 5 review". Macworld.com. Retrieved May 8, 2017.
  26. ^ "Mac Automation Scripting Guide: Using the Systemwide Script Menu". developer.apple.com. Retrieved May 8, 2017.
  27. ^ "osascript(1) Mac OS X Manual Page". www.unix.com. Retrieved July 23, 2024.
  28. ^ "AppleScript Libraries". macosautomation.com. Archived from the original on July 26, 2020. Retrieved May 8, 2017.
  29. ^ "WWDC 2013 Session 416: Introducing AppleScript Libraries". asciiwwdc.com. Retrieved May 8, 2017.
  30. ^ a b Neuburg, Matt (2006). AppleScript: the definitive guide (2nd ed.). Beijing: O'Reilly Media. ISBN 0596102119. OCLC 68694976.
  31. ^ Tsai, Michael (September 29, 2014). "AppleScript and Yosemite". mjtsai.com. Retrieved May 9, 2017.
  32. ^ "AppleScriptObjC Release Notes". developer.apple.com. Retrieved May 8, 2017.
  33. ^ Waldie, Ben (September 6, 2012). "Building a basic AppleScriptObjC (Cocoa-AppleScript) application with Xcode". peachpit.com. Retrieved May 9, 2017.
  34. ^ Table adapted from: Naganoya, Takaaki. "ASObjCExtras Scripting Guide" (PDF). piyocast.com. Archived (PDF) from the original on October 9, 2022. Retrieved May 9, 2017.
  35. ^ "Introduction to Automator AppleScript Actions Tutorial". developer.apple.com. Retrieved May 8, 2017.
  36. ^ a b "Technical Note TN1164: Scripting Additions for Mac OS X". developer.apple.com. Retrieved May 8, 2017.
  37. ^ "AppleScript Release Notes: 10.5 Changes". developer.apple.com. Retrieved May 8, 2017.
  38. ^ "POSIX file — Class Reference — AppleScript Language Guide". developer.apple.com. Retrieved January 8, 2018.
  39. ^ "AppleScript Language Guide: Handlers in Script Applications". developer.apple.com. Retrieved July 21, 2013.
  40. ^ "AppleScript Overview: Open Scripting Architecture". developer.apple.com. Retrieved May 8, 2017.
  41. ^ "Importing Scripts". GitHub. JXA-Cookbook. December 6, 2019. Retrieved December 9, 2019.

Further reading

[edit]
[edit]
咳白色泡沫痰吃什么药 维生素C起什么作用 中暑吃什么水果好 双子男喜欢什么样的女生 木耳属于什么类
药物流产最佳时间什么时候 打歌是什么意思 什么是保守治疗 唐伯虎是什么生肖 人工流产后可以吃什么
gf是什么意思 12.6是什么星座 我们都没错只是不适合是什么歌 热毛巾敷眼睛有什么好处 bgb是什么意思
铿锵玫瑰是什么意思 脑梗什么症状 进口二甲双胍叫什么 左金丸治什么病最好 藿香正气水什么人不能喝
布洛芬过量有什么危害hcv8jop0ns1r.cn 老丈人是什么意思hcv9jop1ns0r.cn 什么得什么hcv9jop2ns3r.cn 身上没力气没劲是什么原因hcv9jop4ns5r.cn 尿检查什么onlinewuye.com
血糖高的可以吃什么水果hcv8jop8ns6r.cn 运钞车是什么车xinjiangjialails.com 长闭口是什么原因造成的hcv9jop3ns3r.cn 吊什么意思hcv7jop6ns5r.cn 单元剧是什么意思hcv8jop1ns2r.cn
奶咖色是什么颜色shenchushe.com 什么食物胶原蛋白含量高hcv9jop2ns3r.cn 什么血型会导致不孕hcv9jop2ns8r.cn 坚强后盾是什么意思hcv7jop7ns2r.cn 2003年五行属什么hcv7jop5ns5r.cn
八月是什么星座hcv8jop1ns1r.cn 碱性磷酸酶高是什么病hcv8jop3ns0r.cn 夵是什么意思hcv9jop2ns8r.cn 公募基金是什么意思hcv7jop6ns1r.cn 卵巢囊肿挂什么科shenchushe.com
百度