AppleScript

AppleScript
Desarrollador(es)
Apple
https://developer.apple.com/applescript/ y https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide
Información general
Extensiones comunes .scpt, .scptd, .applescript
Apareció en 1993
Última versión estable 2.2.1
Sistema de tipos dinámico
Influido por HyperCard
Sistema operativo System 7, Mac OS 8, Mac OS 9 y Mac OS X
Licencia licencia privativa

Applescript es un lenguaje de programación desarrollado por Apple y diseñado para su ejecución bajo los sistemas Mac OS. Genéricamente, Applescript es la palabra usada para designar el entorno de Scripts de Mac OS, pensado para operar en paralelo a la GUI.

Historia

El proyecto Applescript fue una rama derivada del proyecto HyperCard. HyperCard contenía un lenguaje de programación basado en la lengua Inglesa llamado HyperTalk, que podía ser usado para incluir contenido lógico en un programa de HyperCard. Los ingenieros de Apple pensaron que podría diseñarse un lenguaje de scripts similar para ser usado con cualquier aplicación, y el proyecto Applescript ahí dio comienzo.

MacOS necesitó profundos cambios y mejoras para implementar Applescript. Muchos de estos cambios se publicaron con el lanzamiento del sistema 7, principalmente el concepto del Apple Event. Applescript compitió para atraer la atención de los desarrolladores con otras nuevas tecnologías que fueron lanzadas al mismo tiempo (Baloon help, Publish and Subscribe, etc.). Para algunas de las aplicaciones, Applescript fue la tecnología más difícil de implementar, requiriendo que se reescribieran grandes porciones de código de bajo nivel de las mismas, e incluso el propio marco de aplicación de Apple, MacApp, no soportó los Apple Events durante algún tiempo.

El lanzamiento fue en octubre de 1993 como parte del sistema 7.1.1 (La primera gran actualización del sistema 7). QuarkXPress (Versión 3.2) fue una de las primeras grandes aplicaciones que soportó Applescript, y como resultado, Applescript fue ampliamente adoptado en los segmentos de publicación del mercado de Apple. Aunque es discutible, la razón por la cual la plataforma Mac se mantuvo como líder de mercado tras la publicación de QuarkXPress y otras aplicaciones para la plataforma Microsoft Windows, fue que era la única que soportaba la automatización de flujos de trabajo complejos.

El paso hacia Mac OS X y su marco Cocoa ha significado una mejor implementación de Applescript. Las aplicaciones Cocoa ofrecen compatibilidad con Applescript de forma básica sin ningún esfuerzo por parte del desarrollador, y pueden alcanzar niveles profundos de compatibilidad con un poco de inversión de tiempo del desarrollador. AppleScript Studio, publicado con Mac OS X 10.2, permite a los usuarios programar aplicaciones enteras usando Applescript y objetos Cocoa.

Conceptos Básicos

Applescript fue concebido principalmente como un lenguaje de programación de scripts, ofreciendo a los usuarios una herramienta inteligente de control y permitiendo la comunicación entre diferentes aplicaciones.

Los sistemas anteriores al sistema 7 poseían un modelo rudimentario de Evento con el que se podían ejecutar un número fijado de eventos de bajo nivel, como "tecla pulsada" o "botón de mouse pulsado". Cada aplicación era responsable de la gestión y traducción a acciones de alto nivel que tuvieran algún sentido para el usuario, como "Ejecutar la opción de menú Pegar". En muchos casos, el mismo evento contenía tanto el concepto de acción (hacer clic) como las instrucciones para su ejecución (cuando se haga clic, ejecutar la opción Pegar).

La implementación de Applescript requirió al desarrollador la separación de la acción de la ejecución, un trabajo al que Apple se refirió como "Factoring". Los programadores fueron animados a escribir dos maneras distintas de manejo de los eventos, una para el manejo de eventos de bajo nivel (clics, pulsaciones de teclas, etc.) y otra para eventos de alto nivel (Apple Events).

Applescript en Mac OS X

En Mac OS X, Applescript es mucho más sencillo de implementar para los desarrolladores, particularmente para las aplicaciones desarrolladas en Cocoa. A diferencia de Mac OS donde los eventos son procesados por las aplicaciones, bajo Cocoa los eventos son transformados a una instrucción de alto nivel por el objeto NSApplication, y luego dirigido a un objetivo correcto. Esto significa que todas las aplicaciones de Cocoa llevan el "Factoring" hecho, el programador normalmente no escribe nada sobre el manejo del evento y solamente debe escribir cómo responderá la aplicación a los procesos que el evento solicite.

Otra importante ventaja es que los objetos Cocoa se nos presentan como estándares de manera que todos pueden acceder a ellos directamente. Bajo Cocoa, Applescript es mucho más "ligero"; el motor de scripts interpreta el script, traduce los nombres de objeto a su formato interno y luego los manda a la aplicación objetivo. los conceptos ttecnologics que son? son necesidad,clasificación ect.

La metáfora del "Lenguaje natural"

Mientras que los Apple events son una manera de enviar instrucciones a las aplicaciones, Applescript es un lenguaje específico para generar Apple events. Manteniendo la tradición de Mac OS de sencillez de uso, el lenguaje Applescript está diseñado basándose en la metáfora del "lenguaje natural", de la misma manera que GUI está apoyado en la metáfora de escritorio. Los programas de Applescript son generalmente leíbles y editables por cualquiera. Está basado en el lenguaje HyperTalk de HypeCard, y mejorado para que no solo pueda referirse al mundo de éste, sino que teóricamente puede referirse a cualquier documento. Para este fin, el equipo de Applescript introdujo el nuevo AppleEvent Object Model (Modelo de objetos AppleEvent o AEOM), el cual definía los objetos que cualquier aplicación conocía.

Generalmente AEOM definía un número determinado de objetos, como "documento" o "párrafo" y acciones que se podían hacer con ellos, como "cerrar" o "copiar". El sistema también definía las maneras de referirse a las propiedades de los objetos, de manera que se pudiera señalar al "tercer párrafo del documento 1", o al "color de la última palabra de la ventana activa". AEOM utiliza un diccionario para asociar los Apple Events a objetos comprensibles por las personas, permitiendo la traducción en ambos sentidos entre Applescript y los Apple Events. Para saber que elementos de una aplicación pueden ser objeto de scripts, se pueden consultar dichos diccionarios (en Xcode y el editor de scripts, por ejemplo).

Sintaxis

Hola Mundo

Resultado obtenido al ejecutar el programa.

El típico Hola Mundo se escribe en AppleScript con el siguiente código:

 display dialog "¡Hola mundo!"

El resultado obtenido al ejecutar el script es una nueva ventana como la que aparece en el margen.

Comentarios

Hay dos tipos de comentarios en AppleScript:

  • La sintaxis (* cuerpo del comentario *) permite escribir comentario en múltiples líneas.
  • El indicador -- sirve para escribir comentarios de una sola línea.
--Este comentario sólo puede ocupar una línea
#Este comentario sólo puede ocupar una línea
(* En cambio con este,
podemos usar múltiples líneas*)

Adicionalmente también podemos iniciar el script con la línea #!/usr/bin/osascript para poder ejecutar el archivo de texto como un ejecutable de Unix.

Variables y tipos de datos

Las variables no necesitan ser declaradas y no están fuertemente tipadas. Para asignar a una variable un valor determinado se pueden usar dos métodos:

 set nombreDeLaVariable to valorDeLaVariable
--o
copy valorDeLaVariable to nombreDeLaVariable

El nombre de las variables no es sensible a mayúsculas, por lo tanto mivariable y MiVariable son equivalentes. Los nombres de las variables pueden contener letras de la a a la z, excluyendo la ñ, números y el carácter _.

Los tipos básicos en AppleScript son:

  • Booleano
  • Número
  • Texto: Es una serie de caracteres Unicode
  • Registros: es un conjunto no ordenado de etiquetas con un valor asociado.
  • Lista: Es un conjunto ordenado de valores, no necesariamente del mismo tipo.

Ejemplos de estos tipos son:

--Booleanos:
set verdad to true
set falso to false

set numero to 10 --numero es de tipo Número

set texto to "Esto es un texto"

set lista to {valor1, valor2, valor3} --Los distintos valores están separados por comas

set registro to {etiqueta1 : valor1, etiqueta2 : valor2} -- La etiqueta es un identificador único que precede al valor

Los tipos de datos se pueden cambiar para ello se usa:

valorDeTipo1 as tipoFinal

El valor que devuelve esta expresión es la representación de tipo tipoFinal del valor valorDeTipo1. Por ejemplo:

2 as text -- devuelve "2"
true as text -- devuelve "true" 
"3.14" as number --devuelve 3.14

--También hay conversiones imposibles:
"texto" as number --Provoca un error

Funciones

Las declaraciones de funciones en AppleScript, llamadas handlers, pueden tener varias formas:

on nombreDeFuncion for parametric
    (*
    cuerpo de la función
    *)

    --si queremos que devuelva un valor:
    return resultado
end nombreDeFuncion

--Para llamar a la función se usa:
nombreDeFuncion for unaVariable

Se puede cambiar la palabra for por una de las siguientes : about, above, against, apart from, around, aside from, at, below, beneath, beside, between, by, for, from, instead of, into, on, onto, out of, over, since, thru (o through), under. Se pueden definer funciones con múltiples parámetros, usando para ello varias de las palabras listadas anteriormente, distintas para cada parámetro.

on fraccion for numerador over denominador
    return numerador / denominador
end fraccion

Las llamada a las funciones se puede hacer con los parámetros en distinto orden al declarado:

fraccion for 12 over 24
fraccion over 24 for 12
--Las dos llamadas son equivalentes y devuelven 0.5

Las funciones se pueden declarar también con parámetros posicionales:

on nombreDeFuncion(parametro1, parametro2)
    --cuerpo de la función
end nombreDeFuncion

Para que la función no necesite parámetros se escriben solamente los paréntesis, sin nombres entre ellos. También se pueden definir las funciones cambiando el on por to

Funciones especiales

Cuando se guarda un script como aplicación hay 4 funciones que se pueden declarar para que esta tenga ciertos comportamientos:

Run

Es la función que se llama automáticamente al ejecutar un script o al lanzar un script guardado como una aplicación. Se puede definir de dos maneras:

  1. Si en el script hay escritas varios comandos, sin que estos estén dentro de declaraciones de funciones o de objetos script, la función run está ya declarada implícitamente.
  2. Se puede definir explícitamente como una función cualquiera, aunque entonces no puede haber comandos fuera de declaraciones de funciones o de objetos script.:
on run args 
    --comandos a ejecutar
end run
El parámetro args es opcional y sirve para pasar parámetros al inicio, por ejemplo ejecutándolo desde la línea de comandos.

Open

El script recibe la orden de ejecutar la función open cuando el usuario arrastra archivos hasta el icono de la aplicación, pasándole como argumento una lista de alias a los archivos arrastrados.

on open nombresDeLosArchivos 
    --comandos a ejecutar
end open

Idle

Al guardar como aplicación se puede seleccionar la opción Dejar abierto. Esto hace que cada 30 segundos, por defecto, se mande a la aplicación la orden de ejecutar la función idle. El tiempo que pasa entre las llamadas a la función se puede cambiar con el valor que devuelve la función: tiene que ser un entero y representa el tiempo en segundos entre llamadas, para el valor por defecto se devuelve 0.

on idle
    --comandos a ejecutar
    return numeroDeSegundos
end idle

Quit

La función quit es llamada cuando la aplicación recibe la orden de cerrarse. Si durante la ejecución aparece el comando continue quit se sale de la aplicación, pero, si se encuentra un return o la función acaba antes de encontrarlo, no se cierra la aplicación.

on quit
    --comandos a ejecutar
    if condicion then 
        continue quit
    else
        return
    end if
end quit

En este caso solo se saldría de la aplicación si condicion es verdadero.

Estructuras

Condicionales

Al igual que en otros lenguajes de programación hay dos tipos de sentencias condicionales:

--Condicional simple:
if condicion then 
   --Sentencias a ejecutar
end if

--Condiciones compuestas:
if condicion1 then
    --Cuerpo de la primera condición
else if condicion2 then
    --Cuerpo de la segunda condición
else
    --Cuerpo que se ejecuta si no se cumplen la condiciones anteriores
end if

Bucles

Hay varios tipos de bucles:

  • Bucles que no evalúan una condición:
--Bucle infinito:
repeat
    --Sentencias a ejecutar
end repeat

--Bucle que se repite n veces:
repeat n times
    --Sentencias a ejecutar
end repeat
  • Bucles que evalúan una condición:
--Bucle que se repite mientras la condición sea verdadera
repeat while (condicion)
    --Sentencias a ejecutar
end repeat

--Bucle que se repite hasta que la condición pasa a ser verdadera
repeat until (condicion)
    --Sentencias a ejecutar
end repeat
  • Bucles que iteran con una variable
--La variable toma valores enteros desde uno inicial hasta el final
repeat with i from primerValor to valorFinal
    --Sentencias a ejecutar
end repeat

--La variable toma los valores de cada uno de los elementos de la lista
repeat with i in lista
    --Sentencias a ejecutar
end repeat

Bloque tell

El bloque tell tiene dos variantes:

--Forma simple
tell destino to accion_a_realizar

--Forma compuesta
tell destino
    --Sentencias a ejecutar
end tell

El bucle tell ejecuta las sentencias de acuerdo a las funciones y propiedades definidas en el objeto destino. Este último puede ser de tipo application, document o de tipo script, normalmente definido por el usuario, entre otros.

Por ejemplo se puede utilizar para abrir una nueva ventana del Finder:

tell application "Finder"
	make new Finder window
end tell

Tratamiento de errores

Cuando se produce un error durante la ejecución de un script se para el proceso. Para evitarlo y poder continuar con la ejecución se usa el siguiente código:

--Método simple:
try
    --Sentencias que pueden provocar errores
end try
--Método compuesto:
try
    --Sentencias que pueden provocar errores
on error descripcion number n
    --Sentencias a ejecutar si aparece un error
end try

Cuando aparece un error se pasa a error un texto que describe el error,descripción, y un número que identifica el tipo de error, n. Por ejemplo al ejecutar el código:

try
	"test" as boolean
on error descripcion number n
	display dialog descripcion
	display dialog n
end try

La descripción del error es "No es posible convertir "test" en tipo boolean." y el número de error es -1700

También se pueden usar sentencias para marcar un error, lo que para la ejecución del código a no ser que esté dentro de bloque try. La sintaxis es la siguiente:

error descripcionDelError number numeroDeError

Software

Software para editar AppleScript

  • Xcode: Permite editar scripts como archivos de texto y tiene una plantilla definida para crear aplicaciones escritas en AppleScript.[1]
  • Editor AppleScript: viene incluido en Mac OS X y permite editar script y guardarlos como aplicaciones independientes, script compilados o ficheros de texto. También permite ver las funciones y propiedades definidas en las aplicaciones que se pueden controlar mediante AppleScript.
  • Existen varios comandos para la Terminal de Mac OS X que permiten ejecutar scripts:
    • osascript ejecuta un script:[2]
      osascript rutaAlScript
      

      O una sentencia:
      osascript -e sentencia
      
    • osacompile compila un script creando un archivo con extensión «.scpt»:[3]
       osacompile rutaAlScript
      

Software controlable mediante AppleScript

La mayoría de aplicaciones desarrolladas por Apple pueden ser manejadas con AppleScript, por ejemplo:

  • Finder
  • iTunes
  • Xcode
  • Safari

Referencias

  1. «AppleScript en Xcode» (en inglés). Consultado el 8 de julio de 2012. 
  2. Apple Inc. «osascript(1) Mac OS X Manual Page» (en inglés). Consultado el 8 de julio de 2012. 
  3. Apple Inc. «osacompile(1) Mac OS X Manual Page» (en inglés). Consultado el 8 de julio de 2012. 

Bibliografía

Apple. «AppleScript Language Guide» (en inglés). Consultado el 6 de julio de 2012. 

Read other articles:

Yizhar ShaiLahir16 Juli 1963 (umur 60)Tempat lahirEin HaShlosha, IsraelKnesset21, 22, 23Faksi yang diwakili di Knesset2019–Kahol Lavan Yizhar Nitzan Shai (Ibrani: יזהר ניצן שי, lahir 16 Juli 1963) adalah seorang pengusaha dan politikus asal Israel. Ia sekarang menjabat sebagai anggota Knesset untuk aliansi Kahol Lavan. Referensi Pranala luar Yizhar Shai di situs web Knesset Artikel bertopik biografi Israel ini adalah sebuah rintisan. Anda dapat membantu Wikipedia dengan menge...

 

 

Selama peristiwa invasi Rusia ke Ukraina tahun 2022, telah banyak dibahas oleh para komentator di media, tentang kemungkinan Rusia menggunakan senjata nuklir taktis dan risiko eskalasi nuklir yang lebih luas. Beberapa politisi senior Rusia, termasuk Presiden Vladimir Putin dan Menteri Luar Negeri Sergey Lavrov, membuat sejumlah pernyataan yang dianggap sebagai ancaman atas penggunaan senjata nuklir.[1] Selain itu, pendudukan Rusia atas Pembangkit Listrik Tenaga Nuklir Zaporizhia, tela...

 

 

Растительный мир Украины — один из важнейших компонентов природы, который представлен совокупностью различных растительных сообществ, произрастающих на территории Украины. Большое разнообразие климатических условий и почвенного покрова, а также влияния прошлых г...

Disambiguazione – Plaza de toros rimanda qui. Se stai cercando il film del 1956, vedi Plaza de toros (film). Questa voce o sezione sull'argomento architettura è ritenuta da controllare. Motivo: Nomenclatura discordante: a novembre 2016 la voce Plaza de toros è stata spostata ad Arena (tauromachia), ma la categoria è rimasta Categoria:Plaza de toros. Per coerenza andrebbe rinominata anche la categoria. Partecipa alla discussione e/o correggi la voce. Segui i suggerimenti del...

 

 

Halaman ini berisi artikel tentang Presiden pertama Meksiko. Untuk kota di Puebla, lihat Guadalupe Victoria, Puebla. Untuk kota di Durango, lihat Ciudad Guadalupe Victoria. Untuk kota di Baja California, lihat Guadalupe Victoria, Baja California. Guadalupe VictoriaPotret Guadalupe Victoria dipajang di Museo Nacional de las Intervenciones [[ Presiden Mexico]] pertamaMasa jabatan10 Oktober 1824 – 31 Maret 1829Wakil PresidenNicolas BravoPendahuluKekuatan Eksekutif TertinggiPenggan...

 

 

Archipelago and council area off the west coast of mainland Scotland Na h-Eileanan an Iar redirects here. For the parliamentary constituencies, see Na h-Eileanan an Iar (Scottish Parliament constituency) and Na h-Eileanan an Iar (UK Parliament constituency). Long Isle redirects here. For the American island, see Long Island. Outer HebridesScottish Gaelic nameNa h-Eileanan SiarMeaning of nameWestern Isles Flag of Comhairle nan Eilean Siar Coat of arms LocationOuter HebridesOuter Hebrides shown...

College football gameMichigan vs. Ohio State, 2006Game of the Century Michigan Wolverines Ohio State Buckeyes (11–0) (11–0) 39 42 Head coach: Lloyd Carr Head coach: Jim Tressel APCoachesBCS 222 APCoachesBCS 111 1234 Total Michigan 771015 39 Ohio State 72177 42 DateNovember 18, 2006Season2006StadiumOhio StadiumLocationColumbus, OhioFavoriteOhio State by 6[1]RefereeBill LeMonnier[2]Halftime showThe Ohio State University Marching BandAttendance105,708[...

 

 

Indian law officer Solicitor General of IndiaIncumbentTushar Mehtasince 11 October 2018AbbreviationSGIReports toAttorney General for IndiaAppointerACCTerm length3 years (per discretion of ACC)Formation28 January 1950First holderC. K. DaphtaryDeputyAddl. Solicitor Generals This article is part of a series onJudiciary of India Law of India Administration Ministry of Law and Justice Department of Legal Affairs Legislative Department Department of Justice Law Commission of India Civil courts...

 

 

此條目可参照英語維基百科相應條目来扩充。 (2021年5月6日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。 约翰斯顿环礁Kalama Atoll 美國本土外小島嶼 Johnston Atoll 旗幟颂歌:《星條旗》The Star-Spangled Banner約翰斯頓環礁�...

Северный морской котик Самец Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:Синапси...

 

 

British advocate and politician (1742–1811) For other people named Henry Dundas, see Henry Dundas (disambiguation). The Right HonourableThe Viscount MelvillePC FRSEHenry Dundas, 1st Viscount Melville by Sir Thomas LawrenceFirst Lord of the AdmiraltyIn officeMay 1804 – May 1805MonarchGeorge IIIPrime MinisterWilliam Pitt the YoungerPreceded byThe Earl of St. VincentSucceeded byThe Lord BarhamSecretary of State for WarIn officeJuly 1794 – March 1801MonarchGeorge IIIPrime ...

 

 

「離島」、「飛地」、あるいは「自治州」とは異なります。 海外領土・自治領の一覧(かいがいりょうど・じちりょうのいちらん)は、世界に存在する「独立国家以外の地域」の一覧である。 海外領土・自治領を示した世界地図       豪       智       丁       仏     ...

المضنون به على غير أهله غلاف طبعة المطبعة الإعلامية بمصر سنة 1303 هـ. معلومات الكتاب المؤلف تُنسب إلى الغزالي الطوسي اللغة العربية السلسلة علوم إسلامية تعديل مصدري - تعديل   المضنون به على غير أهله هو كتاب يُنسب إلى الإمام الغزالي الطوسي (ت. 505 هـ)، يدور الشك حول صحة نسبتها إ...

 

 

Questa voce o sezione sull'argomento porti non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Porto di NapoliZona occidentale del porto.Stato Italia Regione Campania Comune Napoli MareMar Tirreno Infrastrutture collegateAutostrada A1, Autostrada A3 TipoCommerciale, traghetti, cantiere nautico, container, crociere GestoriAutorità di Sistema P...

 

 

  لمعانٍ أخرى، طالع البلدة القديمة (توضيح). البلدة القديمةالبلدة القديمةمعلومات عامةنوع المبنى settlement site (en) المكان محافظة العلا - المدينة المنورةالمنطقة الإدارية العلا البلد  السعوديةمعلومات أخرىالإحداثيات 26°37′N 37°55′E / 26.62°N 37.92°E / 26.62; 37.92 تعديل - تعديل...

Village and municipality in Slovakia Location of Levice District in the Nitra Region Lok (Hungarian: Garamlök) is a village and municipality in the Levice District in the Nitra Region of Slovakia. History In historical records the village was first mentioned in 1286. Geography The village lies at an altitude of 196 metres and covers an area of 17.197 km². It has a population of about 980 people. Ethnicity The village is approximately 80% Slovak, 17% Magyar and 3% Gypsy. Facilities The ...

 

 

Disambiguazione – Se stai cercando il programma di Corrado Guzzanti, vedi Aniene (programma televisivo). Disambiguazione – Anio rimanda qui. Se stai cercando il personaggio della mitologia greca, figlio di Apollo, vedi Anio (mitologia). AnieneIl fiume Aniene a SubiacoStato Italia Regioni Lazio Province Frosinone  Roma ComuniFilettino, Trevi nel Lazio, Vallepietra, Subiaco, Agosta, Arsoli, Marano Equo, Tivoli e Roma. Lunghezza98,5 km Portata media30,7 m³/s Bac...

 

 

Fictional character appearing in American comic books published by Marvel Comics This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all important aspects of the article. (January 2016) The topic of this article may not meet Wikipedia's g...

لوني تومسون   معلومات شخصية الميلاد 1 يوليو 1948 (76 سنة)  هنغتينغتون  مواطنة الولايات المتحدة  عضو في الأكاديمية الوطنية للعلوم،  والأكاديمية الصينية للعلوم،  والجمعية الأمريكية للفلسفة،  والجمعية الأمريكية لتقدم العلوم،  والأكاديمية الأمريكية للفنون و...

 

 

Bobsleigh, luge, and skeleton track located in Yanqing, Beijing, China Yanqing National Sliding CenterLocationYanqing District, Beijing, ChinaCoordinates40°31′14.7″N 115°46′51.9″E / 40.520750°N 115.781083°E / 40.520750; 115.781083Capacity10,000 (1,500 seated)Field sizeTotal length: 1975m (Competition Length 1615m)ConstructionBroke groundJuly 2018BuiltJuly 2018 to November 2020OpenedNovember 2020Main contractorsShanghai Baoye Group Co. Ltd This article needs...