[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-automagica--automagica":3,"similar-automagica--automagica":90},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":6,"owner_name":14,"owner_avatar_url":15,"owner_bio":16,"owner_company":17,"owner_location":17,"owner_email":18,"owner_twitter":17,"owner_website":19,"owner_url":20,"languages":21,"stars":26,"forks":27,"last_commit_at":28,"license":17,"difficulty_score":29,"env_os":30,"env_gpu":31,"env_ram":31,"env_deps":32,"category_tags":36,"github_topics":41,"view_count":54,"oss_zip_url":17,"oss_zip_packed_at":17,"status":55,"created_at":56,"updated_at":57,"faqs":58,"releases":89},6067,"automagica\u002Fautomagica","automagica","AI-powered Smart Robotic Process Automation 🤖","Automagica 是一款融合了人工智能技术的智能机器人流程自动化（RPA）开源项目，旨在让自动化技术变得人人可用。它主要解决重复性电脑操作耗时费力的问题，能够自动执行如浏览器与 Excel 交互、文件加密解密等复杂任务，显著提升工作效率。\n\n这套工具特别适合希望实现办公自动化的普通用户，以及需要灵活定制流程的开发者。对于开发者而言，Automagica 提供了基于 Jupyter Notebook 的开发环境（Automagica Lab）和可视化流程设计器（Automagica Flow），并支持直接编写 Python 代码，兼顾了低门槛与高自由度。\n\n其独特的技术亮点在于\"Automagica Wand\"，这是一个由 AI 驱动的界面元素拾取器，能更精准地识别和操作软件界面，解决了传统 RPA 在动态界面中定位不准的痛点。虽然该项目核心部分已被 Netcall 收购并转向商业集成，但其原有的架构设计依然展示了将 AI 视觉能力与传统自动化脚本完美结合的创新思路，是学习 RPA 与 AI 结合应用的优秀案例。","![https:\u002F\u002Fautomagica.com)](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fautomagica_automagica_readme_6f61b7e16a2a.png)\n\n# Automagica \n\nThe Automagica project began in 2018 with a focus on creating open source software to ensure that Robotic Process Automation technologies were accessible to all.\n\nWith subsequent releases of Automagica, more advanced features such as Wand and the Portal required a service infrastructure to deliver more resilient robots, advanced services, and management and control.\n\nAs use of these services has increased, the costs for hosting and maintaining the service layer have correspondingly increased. \n\nIn order to drive the next phase of development for these important services, today, 13th October 2020, we are pleased to announce that Netcall plc, a leading provider of low-code, customer engagement, and contact centre software, has acquired Oakwood Technologies BV (trading as ‘Automagica’).\n\nNetcall will integrate Automagica’s RPA into its Liberty platform, providing a powerful combination of RPA, Low-code, and Customer Engagement solutions.\n\nThe Automagica Robot is no longer be available under the terms of the AGPL3 licence.\n\nWe’re not stopping the use of the services for robots already deployed. These will continue to operate with Wand and OCR, free of charge, for three months from today (13 Oct 20).\n\nExisting users of the Automagica Portal will also be able to access, free of charge, for three months, during which time users will be offered options to migrate to a commercial service.\n\nWe wish to thank all contributors to the project.\n\n\n![Love Automagica Example](https:\u002F\u002Fi.imgur.com\u002FC4M6LBl.gif)\n\n## Components\nThe Automagica suite consists of the following components:\n- __Automagica Bot__: runtime\u002Fagent responsible for performing the automated tasks.\n- __Automagica Flow__: a visual flow designer to build automations quickly with full support for Python code.\n- __Automagica Wand__: UI element picker powered by AI.\n- __Automagica Lab__: Notebook-style automation development environment based on Jupyter Notebooks (requires Jupyter to be installed).\n- __Automagica Portal__: management of bots, credentials, automations, logs, ...\n\n![Portal and Flow](https:\u002F\u002Fi.imgur.com\u002Fps1Uhck.png)\n\n## Example\n\nBrowser working with Excel:\n\n![Excel Example Automagica](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fautomagica_automagica_readme_6f61b7e16a2a.gif)\n\n\n## Activities\n\nAn overview of all official Automagica activities:\n\nProcess | Description\n------- | -----------\n**Cryptography** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Random key](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_key) | Generate random Fernet key.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-solid.svg\" width=\"20\"> [Encrypt text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.encrypt_text_with_key) | Encrypt text with (Fernet) key,\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-open-solid.svg\" width=\"20\"> [Decrypt text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.decrypt_text_with_key) | Dexrypt bytes-like object to string with (Fernet) key\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-solid.svg\" width=\"20\"> [Encrypt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.encrypt_file_with_key) | Encrypt file with (Fernet) key. Note that file will be unusable unless unlocked with the same key.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-open-solid.svg\" width=\"20\"> [Decrypt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.decrypt_file_with_key) | Decrypts file with (Fernet) key\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-solid.svg\" width=\"20\"> [Key from password](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_key_from_password) | Generate key based on password and salt. If both password and salt are known the key can be regenerated.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffingerprint-solid.svg\" width=\"20\"> [Hash from file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_hash_from_file) | Generate hash from file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffingerprint-solid.svg\" width=\"20\"> [Hash from text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_hash_from_text) | Generate hash from text. Keep in mind that MD5 is not cryptographically secure.\n**Random** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdice-solid.svg\" width=\"20\"> [Random number](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_number) | Random numbers can be integers (not a fractional number) or a float (fractional number).\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdigital-tachograph-solid.svg\" width=\"20\"> [Random data](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_data) | Generates all kinds of random data. Specifying locale changes format for some options\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcoins-solid.svg\" width=\"20\"> [Random boolean](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_boolean) | Generates a random boolean (True or False)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-tag-solid.svg\" width=\"20\"> [Random name](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_name) | Generates a random name. Adding a locale adds a more common name in the specified locale. Provides first name and last name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcomment-solid.svg\" width=\"20\"> [Random words](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_words) | Generates a random sentence. Specifying locale changes language and content based on locale.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmap-marker-solid.svg\" width=\"20\"> [Random address](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_address) | Generates a random address. Specifying locale changes random locations and streetnames based on locale.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fvolume-up-solid.svg\" width=\"20\"> [Random beep](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_beep) | Generates a random beep, only works on Windows\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcalendar-solid.svg\" width=\"20\"> [Random date](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_date) | Generates a random date.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcalendar-solid.svg\" width=\"20\"> [Today's date](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_date_today) | Generates today's date.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frandom-solid.svg\" width=\"20\"> [Generate unique identifier](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_unique_identifier) | Generates a random UUID4 (universally unique identifier). \n**Output** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftv-solid.svg\" width=\"20\"> [Display overlay message](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.display_osd_message) | Display custom OSD (on-screen display) message. Can be used to display a message for a limited amount of time. Can be used for illustration, debugging or as OSD.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftv-solid.svg\" width=\"20\"> [Print message in console](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.print_console) | Print message in console. Can be used to display data in the Automagica Flow console\n**Browser** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fchrome.svg\" width=\"20\"> [Chrome](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Chrome) | Open Chrome Browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fimages-solid.svg\" width=\"20\"> [Save all images](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_all_images) | Save all images on current page in the Browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fchrome.svg\" width=\"20\"> [Browse to URL](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.browse_to) | Browse to URL.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Falign-center-solid.svg\" width=\"20\"> [Find elements by text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_elements_by_text) | Find all elements by their text. Text does not need to match exactly, part of text is enough.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Find all links](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_all_links) | Find all links on a webpage in the browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Find first link on a webpage](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_first_link) | Find first link on a webpage\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Get all text on webpage](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_text_on_webpage) | Get all the raw body text from current webpage\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhighlighter-solid.svg\" width=\"20\"> [Highlight element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.highlight) | Highlight elements in yellow in the browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-close-solid.svg\" width=\"20\"> [Exit the browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.exit) | Quit the browser by exiting gracefully. One can also use the native 'quit' function\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find all XPaths](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_xpaths) | Find all elements with specified xpath on a webpage in the the browser. Can also use native 'find_elements_by_xpath'\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find XPath in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_xpath) | Find all element with specified xpath on a webpage in the the browser. Can also use native 'find_elements_by_xpath'\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find class in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_class) | Find element with specified class on a webpage in the the browser. Can also use native 'find_element_by_class_name'\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find class in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_classes) | Find all elements with specified class on a webpage in the the browser. Can also use native 'find_elements_by_class_name' function\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find element in browser based on class and text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_class_and_by_text) | Find all elements with specified class and text on a webpage in the the browser.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find id in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_id) | Find element with specified id on a webpage in the the browser. Can also use native 'find_element_by_id' function\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Switch to iframe in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.switch_to_iframe) | Switch to an iframe in the browser\n**Credential Management** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Set credential](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_credential) | Add a credential which stores credentials locally and securely. All parameters should be Unicode text.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Delete credential](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_credential) | Delete a locally stored credential. All parameters should be Unicode text.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Get credential](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_credential) | Get a locally stored redential. All parameters should be Unicode text.\n**FTP** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-open-solid.svg\" width=\"20\"> [Create FTP connection (insecure)](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.FTP) | Can be used to automate activites for FTP\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdownload-solid.svg\" width=\"20\"> [Download file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.download_file) | Downloads a file from FTP server. Connection needs to be established first.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fupload-solid.svg\" width=\"20\"> [Upload file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.upload_file) | Upload file to FTP server\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-ol-solid.svg\" width=\"20\"> [List FTP files](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.enumerate_files) | Generate a list of all the files in the FTP directory\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-ol-solid.svg\" width=\"20\"> [Check FTP directory](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.directory_exists) | Check if FTP directory exists\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-plus-solid.svg\" width=\"20\"> [Create FTP directory](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.create_directory) | Create a FTP directory. Note that sufficient permissions are present\n**Keyboard** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkeyboard-solid.svg\" width=\"20\"> [Press key](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.press_key) | Press and release an entered key. Make sure your keyboard is on US layout (standard QWERTY).If you are using this on Mac Os you might need to grant access to your terminal application.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkeyboard-solid.svg\" width=\"20\"> [Press key combination](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.press_key_combination) | Press a combination of two or three keys simultaneously. Make sure your keyboard is on US layout (standard QWERTY).\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkeyboard-solid.svg\" width=\"20\"> [Type text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.typing) | Simulate keystrokes. If an element ID is specified, text will be typed in a specific field or element based on the element ID (vision) by the recorder.\n**Mouse** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-solid.svg\" width=\"20\"> [Get mouse coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_mouse_position) | Get the x and y pixel coordinates of current mouse position.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsearch-location-solid.svg\" width=\"20\"> [Display mouse position](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.display_mouse_position) | Displays mouse position in an overlay.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Mouse click](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click) | Clicks on an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Mouse click coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click_coordinates) | Clicks on an element based on pixel position determined by x and y coordinates. To find coordinates one could use display_mouse_position().\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Double mouse click coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.double_click_coordinates) | Double clicks on a pixel position determined by x and y coordinates.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Double mouse click](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.double_click) | Double clicks on an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Right click](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.right_click) | Right clicks on an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Right click coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.right_click_coordinates) | Right clicks on an element based pixel position determined by x and y coordinates.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Move mouse](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mouse_to) | Moves te pointer to an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Move mouse coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mouse_to_coordinates) | Moves te pointer to an element based on the pixel position determined by x and y coordinates\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Move mouse relative](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mouse_relative) | Moves the mouse an x- and y- distance relative to its current pixel position.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Drag mouse](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.drag_mouse_to_coordinates) | Drags mouse to an element based on pixel position determined by x and y coordinates\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Drag mouse](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.drag_mouse_to) | Drags mouse to an element based on the element ID (vision)\n**Image** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcrop-alt-solid.svg\" width=\"20\"> [Random screen snippet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.random_screen_snippet) | Take a random square snippet from the current screen. Mainly for testing and\u002For development purposes.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fexpand-solid.svg\" width=\"20\"> [Screenshot](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.take_screenshot) | Take a screenshot of current screen.\n**Folder Operations** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsearch-solid.svg\" width=\"20\"> [List files in folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_files_in_folder) | List all files in a folder (and subfolders)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-plus-solid.svg\" width=\"20\"> [Create folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.create_folder) | Creates new folder at the given path.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Rename folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.rename_folder) | Rename a folder\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-open-solid.svg\" width=\"20\"> [Open a folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.show_folder) | Open a folder with the default explorer.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Move a folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_folder) | Moves a folder from one place to another.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-minus-solid.svg\" width=\"20\"> [Remove folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.remove_folder) | Remove a folder including all subfolders and files. For the function to work optimal, all files and subfolders in the main targetfolder should be closed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-minus-solid.svg\" width=\"20\"> [Empty folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.empty_folder) | Remove all contents from a folderFor the function to work optimal, all files and subfolders in the main targetfolder should be closed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Checks if folder exists](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.folder_exists) | Check whether folder exists or not, regardless if folder is empty or not.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Copy a folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.copy_folder) | Copies a folder from one place to another.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farchive-solid.svg\" width=\"20\"> [Zip](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.zip_folder) | Zip folder and its contents. Creates a .zip file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farchive-solid.svg\" width=\"20\"> [Unzip](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.unzip) | Unzips a file or folder from a .zip file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclock-solid.svg\" width=\"20\"> [Return most recent file in directory](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.most_recent_file) | Return most recent file in directory\n**Delay** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhourglass-solid.svg\" width=\"20\"> [Wait](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait) | Make the robot wait for a specified number of seconds. Note that this activity is blocking. This means that subsequent activities will not occur until the the specified waiting time has expired.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhourglass-solid.svg\" width=\"20\"> [Wait for folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_folder_exists) | Waits until a folder exists.Note that this activity is blocking and will keep the system waiting.\n**Word Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Start Word Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Word) | For this activity to work, Microsoft Office Word needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save active Word document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save As](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save active Word document to a specific location\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Append text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.append_text) | Append text at end of Word document.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Replace text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.replace_text) | Can be used for example to replace arbitrary placeholder value. For example whenusing template document, using 'XXXX' as a placeholder. Take note that all strings are case sensitive.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Read all text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_all_text) | Read all the text from a document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-pdf-solid.svg\" width=\"20\"> [Export to PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_pdf) | Export the document to PDF\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhtml5.svg\" width=\"20\"> [Export to HTML](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_html) | Export to HTML\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fheading-solid.svg\" width=\"20\"> [Set footers](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_footers) | Set the footers of the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsubscript-solid.svg\" width=\"20\"> [Set headers](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_headers) | Set the headers of the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Quit Word](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | This closes Word, make sure to use 'save' or 'save_as' if you would like to save before quitting.\n**Word File** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Read and Write Word files](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.WordFile) | These activities can read, write and edit Word (docx) files without the need of having Word installed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Read all text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_all_text) | Read all the text from the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Append text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.append_text) | Append text at the end of the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save file on specified path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Set headers](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_headers) | Set headers of Word document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Replace all](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.replace_text) | Replaces all occurences of a placeholder text in the document with a replacement text.\n**Outlook Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Start Outlook Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Outlook) | For this activity to work, Outlook needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Send e-mail](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_mail) | Send an e-mail using Outlook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Retrieve folders](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_folders) | Retrieve list of folders from Outlook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Retrieve e-mails](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_mails) | Retrieve list of messages from Outlook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Delete e-mails](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_mails) | Deletes e-mail messages in a certain folder. Can be specified by searching on subject, body or sender e-mail.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Move e-mails](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mails) | Move e-mail messages in a certain folder. Can be specified by searching on subject, body or sender e-mail.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Save attachments](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_attachments) | Save all attachments from certain folder\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Retrieve contacts](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_contacts) | Retrieve all contacts\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Add a contact](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_contact) | Add a contact to Outlook contacts\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Quit](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | Close the Outlook application\n**Excel Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Start Excel Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Excel) | For this activity to work, Microsoft Office Excel needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Add worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_worksheet) | Adds a worksheet to the current workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_worksheet) | Activate a worksheet in the current Excel document by name\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save the current workbook. Defaults to homedir\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save the current workbook to a specific path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_cell) | Write to a specific cell in the currently active workbook and active worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_cell) | Read a cell from the currently active workbook and active worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write range](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_range) | Write to a specific range in the currently active worksheet in the active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read range](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_range) | Read a range of cells from the currently active worksheet in the active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Run macro](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_macro) | Run a macro by name from the currently active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Get worksheet names](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_worksheet_names) | Get names of all the worksheets in the currently active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Get table](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_table) | Get table data from the currently active worksheet by name of the table\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate range](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_range) | Activate a particular range in the currently active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell down](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_down) | Activates the first empty cell going down\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell right](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_right) | Activates the first empty cell going right\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell left](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_left) | Activates the first empty cell going left\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell up](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_up) | Activates the first empty cell going up\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write cell formula](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_cell_formula) | Write a formula to a particular cell\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read cell formula](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_cell_formula) | Read the formula from a particular cell\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Insert empty row](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.insert_empty_row) | Inserts an empty row to the currently active worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Insert empty column](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.insert_empty_column) | Inserts an empty column in the currently active worksheet. Existing columns will shift to the right.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Delete row in Excel](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_row) | Deletes a row from the currently active worksheet. Existing data will shift up.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Delete column](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_column) | Delete a column from the currently active worksheet. Existing columns will shift to the left.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Export to PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_pdf) | Export to PDF\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Insert data as table](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.insert_data_as_table) | Insert list of dictionaries as a table in Excel\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_worksheet) | Read data from a worksheet as a list of lists\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Quit Excel](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | This closes Excel, make sure to use 'save' or 'save_as' if you would like to save before quitting.\n**Excel File** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read and Write xlsx files.](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.ExcelFile) | This activity can read, write and edit Excel (xlsx) files without the need of having Excel installed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Export file to dataframe](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.to_dataframe) | Export to pandas dataframe\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_worksheet) | Activate a worksheet. By default the first worksheet is activated.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save file as\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_cell) | Write a cell based on column and row\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_cell) | Read a cell based on column and row\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Add worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_worksheet) | Add a worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Get worksheet names](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_worksheet_names) | Get worksheet names\n**PowerPoint Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Start PowerPoint Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.PowerPoint) | For this activity to work, PowerPoint needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Save PowerPoint](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save PowerPoint Slidedeck\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Save PowerPoint](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save PowerPoint Slidedeck\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Close PowerPoint Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | Close PowerPoint\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Add PowerPoint Slides](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_slide) | Adds slides to a presentation\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Slide count](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.number_of_slides) | Returns the number of slides\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Text to slide](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_text) | Add text to a slide\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Delete slide](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_slide) | Delete a slide\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Replace all occurences of text in PowerPoint slides](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.replace_text) | Can be used for example to replace arbitrary placeholder value in a PowerPoint.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [PowerPoint to PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_pdf) | Export PowerPoint presentation to PDF file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Slides to images](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_slides_to_images) | Export PowerPoint slides to seperate image files\n**Office 365** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fenvelope-solid.svg\" width=\"20\"> [Send email Office Outlook 365](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_email_with_outlook365) | Send email Office Outlook 365\n**Salesforce** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsalesforce.svg\" width=\"20\"> [Salesforce API](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.salesforce_api_call) | Activity to make calls to Salesforce REST API.\n**E-mail (SMTP)** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Mail with SMTP](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_mail_smtp) | This function lets you send emails with an e-mail address.\n**Windows OS** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Freadme.svg\" width=\"20\"> [Find window with specific title](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_window_title) | Find a specific window based on the name, either a perfect match or a partial match.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Login to Windows Remote Desktop](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.start_remote_desktop) | Create a RDP and login to Windows Remote Desktop\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Stop Windows Remote Desktop](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.close_remote_desktop) | Stop Windows Remote Desktop\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Set Windows password](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_user_password) | Sets the password for a Windows user.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Check Windows password](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.validate_user_password) | Validates a Windows user password if it is correct\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-lock-solid.svg\" width=\"20\"> [Lock Windows](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.lock_windows) | Locks Windows requiring login to continue.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-solid.svg\" width=\"20\"> [Check if Windows logged in](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_logged_in) | Checks if the current user is logged in and not on the lockscreen. Most automations do not work properly when the desktop is locked.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-solid.svg\" width=\"20\"> [Check if Windows is locked](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_desktop_locked) | Checks if the current user is locked out and on the lockscreen. Most automations do not work properly when the desktop is locked.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-solid.svg\" width=\"20\"> [Get Windows username](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_username) | Get current logged in user's username\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclipboard-check-solid.svg\" width=\"20\"> [Set clipboard](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_to_clipboard) | Set any text to the Windows clipboard.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclipboard-list-solid.svg\" width=\"20\"> [Get clipboard](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_from_clipboard) | Get the text currently in the Windows clipboard\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclipboard-solid.svg\" width=\"20\"> [Empty clipboard](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.clear_clipboard) | Empty text from clipboard. Getting clipboard data after this should return in None\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcogs-solid.svg\" width=\"20\"> [Run VBSscript](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_vbs_script) | Run a VBScript file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fvolume-up-solid.svg\" width=\"20\"> [Beep](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.beep) | Make a beeping sound. Make sure your volume is up and you have hardware connected.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [Get all network interface names](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_all_network_interface_names) | Returns a list of all network interfaces of the current machine\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [Enable network interface](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.enable_network_interface) | Enables a network interface by its name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [Disable network interface](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.disable_network_interface) | Disables a network interface by its name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Get default printer](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_default_printer_name) | Returns the name of the printer selected as default\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Set default printer](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_default_printer) | Set the default printer.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Remove printer](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.remove_printer) | Removes a printer by its name\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Get service status](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_service_status) | Returns the status of a service on the machine\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Start a service](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.start_service) | Starts a Windows service\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Stop a service](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.stop_service) | Stops a Windows service\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Set window to foreground](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_window_to_foreground) | Sets a window to foreground by its title.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Get foreground window title](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_foreground_window_title) | Retrieve the title of the current foreground window\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Close window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.close_window) | Closes a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Maximize window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.maximize_window) | Maximizes a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Restore window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.restore_window) | Restore a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Minimize window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.minimize_window) | Minimizes a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Resize window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.resize_window) | Resize a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Hide window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.hide_window) | Hides a window from the user desktop by using it's title\n**Terminal** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fterminal-solid.svg\" width=\"20\"> [Run SSH command](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_ssh_command) | Runs a command over SSH (Secure Shell)\n**SNMP** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [SNMP Get](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.snmp_get) | Retrieves data from an SNMP agent using SNMP (Simple Network Management Protocol)\n**Active Directory** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Faudio-description-solid.svg\" width=\"20\"> [AD interface](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.ActiveDirectory) | Interface to Windows Active Directory through ADSI. Connects to the AD domain to which the machine is joined by default.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Faudio-description-solid.svg\" width=\"20\"> [Get AD object by name](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_object_by_distinguished_name) | Interface to Windows Active Directory through ADSI\n**Utilities** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhome-solid.svg\" width=\"20\"> [Get user home path](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.home_path) | Returns the current user's home path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdesktop-solid.svg\" width=\"20\"> [Get desktop path](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.desktop_path) | Returns the current user's desktop path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdownload-solid.svg\" width=\"20\"> [Get downloads path](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.downloads_path) | Returns the current user's default download path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-solid.svg\" width=\"20\"> [Open file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.open_file) | Opens file with default programs\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdesktop-solid.svg\" width=\"20\"> [Set wallpaper](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_wallpaper) | Set Windows desktop wallpaper with the the specified image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcloud-download-alt-solid.svg\" width=\"20\"> [Download file from a URL](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.download_file_from_url) | Download file from a URL\n**System** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-contract-solid.svg\" width=\"20\"> [Rename a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.rename_file) | This activity will rename a file. If the the desired name already exists in the folder file will not be renamed. Make sure to add the exstention to specify filetype.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-export-solid.svg\" width=\"20\"> [Move a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_file) | If the new location already contains a file with the same name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftrash-solid.svg\" width=\"20\"> [Remove a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.remove_file) | Remove a file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftasks-solid.svg\" width=\"20\"> [Check if file exists](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.file_exists) | This function checks whether the file with the given path exists.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-alt-solid.svg\" width=\"20\"> [Wait until a file exists.](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_file_exists) | Note that this activity is blocking and will keep the system waiting.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-solid.svg\" width=\"20\"> [List to .txt](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_list_to_file) | Writes a list to a  text (.txt) file.Every element of the entered list is written on a new line of the text file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fth-list-solid.svg\" width=\"20\"> [Read list from .txt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_list_from_txt) | This activity reads the content of a .txt file to a list and returns that list.Every new line from the .txt file becomes a new element of the list. The activity willnot work if the entered path is not attached to a .txt file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fth-list-solid.svg\" width=\"20\"> [Read .txt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_from_txt) | This activity reads a .txt file and returns the content\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftasks-solid.svg\" width=\"20\"> [Append to .txt](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.append_line) | Append a text line to a file and creates the file if it does not exist yet.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-alt-solid.svg\" width=\"20\"> [Make text file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.make_text_file) | Initialize text file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcopy-solid.svg\" width=\"20\"> [Read .txt file with newlines to list](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_text_file_to_list) | Read a text file to a Python list-object\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcopy-solid.svg\" width=\"20\"> [Copy a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.copy_file) | Copies a file from one place to another.If the new location already contains a file with the same name, a random 4 character uid is added to the name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Finfo-solid.svg\" width=\"20\"> [Get file extension](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_file_extension) | Get extension of a file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Print](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_to_printer) | Send file to default printer to priner. This activity sends a file to the printer. Make sure to have a default printer set up.\n**PDF** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fglasses-solid.svg\" width=\"20\"> [Text from PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_text_from_pdf) | Extracts the text from a PDF. This activity reads text from a pdf file. Can only read PDF files that contain a text layer.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fobject-ungroup-solid.svg\" width=\"20\"> [Merge PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.join_pdf_files) | Merges multiple PDFs into a single file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcut-solid.svg\" width=\"20\"> [Extract page from PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.extract_page_range_from_pdf) | Extracts a particular range of a PDF to a separate file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ficons-solid.svg\" width=\"20\"> [Extract images from PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.extract_images_from_pdf) | Save a specific page from a PDF as an image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fstamp-solid.svg\" width=\"20\"> [Watermark a PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.apply_watermark_to_pdf) | Watermark a PDF\n**System Monitoring** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmicrochip-solid.svg\" width=\"20\"> [CPU load](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_cpu_load) | Get average CPU load for all cores.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcalculator-solid.svg\" width=\"20\"> [Count CPU](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_number_of_cpu) | Get the number of CPU's in the current system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwave-square-solid.svg\" width=\"20\"> [CPU frequency](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_cpu_frequency) | Get frequency at which CPU currently operates.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fserver-solid.svg\" width=\"20\"> [CPU Stats](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_cpu_stats) | Get CPU statistics\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmemory-solid.svg\" width=\"20\"> [Memory statistics](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_memory_stats) | Get  memory statistics\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsave-solid.svg\" width=\"20\"> [Disk stats](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_disk_stats) | Get disk statistics of main disk\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsave-solid.svg\" width=\"20\"> [Partition info](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_disk_partitions) | Get disk partition info\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclock-solid.svg\" width=\"20\"> [Boot time](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_boot_time) | Get most recent boot time\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclock-solid.svg\" width=\"20\"> [Uptime](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_time_since_last_boot) | Get uptime since last boot\n**Image Processing** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fimages-solid.svg\" width=\"20\"> [Show image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.show_image) | Displays an image specified by the path variable on the default imaging program.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fundo-solid.svg\" width=\"20\"> [Rotate image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.rotate_image) | Rotate an image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fexpand-arrows-alt-solid.svg\" width=\"20\"> [Resize image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.resize_image) | Resizes the image specified by the path variable.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fexpand-arrows-alt-solid.svg\" width=\"20\"> [Get image width](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_image_width) | Get with of image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-v-solid.svg\" width=\"20\"> [Get image height](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_image_height) | Get height of image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcrop-solid.svg\" width=\"20\"> [Crop image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.crop_image) | Crops the image specified by path to a region determined by the box variable.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcaret-up-solid.svg\" width=\"20\"> [Mirror image horizontally](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.mirror_image_horizontally) | Mirrors an image with a given path horizontally from left to right.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcaret-right-solid.svg\" width=\"20\"> [Mirror image vertically](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.mirror_image_vertically) | Mirrors an image with a given path vertically from top to bottom.\n**Process** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Windows run](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_manual) | Use Windows Run to boot a processNote this uses keyboard inputs which means this process can be disrupted by interfering inputs\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fplay-solid.svg\" width=\"20\"> [Run process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run) | Use subprocess to open a windows process\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcogs-solid.svg\" width=\"20\"> [Check if process is running](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_process_running) | Check if process is running. Validates if given process name (name) is currently running on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-solid.svg\" width=\"20\"> [Get running processes](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_running_processes) | Get names of unique processes currently running on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-close-solid.svg\" width=\"20\"> [Kill process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.kill_process) | Kills a process forcefully\n**Optical Character Recognition (OCR)** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Freadme.svg\" width=\"20\"> [Get text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.extract_text_ocr) | This activity extracts all text from the current screen or an image if a path is specified.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fglasses-solid.svg\" width=\"20\"> [Find text on screen with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_text_on_screen_ocr) | This activity finds position (coordinates) of specified text on the current screen using OCR.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Click on text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click_on_text_ocr) | This activity clicks on position (coordinates) of specified text on the current screen using OCR.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Double click on text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.double_click_on_text_ocr) | This activity double clicks on position (coordinates) of specified text on the current screen using OCR.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Right click on text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.right_click_on_text_ocr) | This activity Right clicks on position (coordinates) of specified text on the current screen using OCR.\n**UiPath** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Execute a UiPath process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.execute_uipath_process) | This activity allows you to execute a process designed with the UiPath Studio. All console output from the Write Line activity will be printed as output.\n**AutoIt** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Execute a AutoIt script](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_autoit_script) | This activity allows you to run an AutoIt script. If you use the ConsoleWrite function, the output will be presented to you.\n**Alternative frameworks** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Execute a Robot Framework test case](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.execute_robotframework_test) | This activity allows you to run a Robot Framework test case. Console output of the test case will be printed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Run a Blue Prism process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_blueprism_process) | This activity allows you to run a Blue Prism process.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Run an Automation Anywhere task](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_automationanywhere_task) | This activity allows you to run an Automation Anywhere task.\n**General** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Raise exception](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.raise_exception) | Raises an exception\n**SAP GUI** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Quit SAP GUI](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | Quits the SAP GUI completely and forcibly.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Log in to SAP GUI](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.login) | Logs in to an SAP system on SAP GUI.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Click on a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click_sap) | Clicks on an identifier in the SAP GUI.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Get text from a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_text) | Retrieves the text from a SAP GUI element.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Set text of a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_text) | Sets the text of a SAP GUI element.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Highlights a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.highlight) | Temporarily highlights a SAP GUI element\n**Portal** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Create a new job in the Automagica Portal](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.create_new_job_in_portal) | This activity creates a new job in the Automagica Portal for a given process. The bot performing this activity needs to be in the same team as the process it creates a job for.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Get a credential from the Automagica Portal](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_credential_from_portal) | This activity retrieves a credential from the Automagica Portal.\n**Vision** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Check if element is visible on screen](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_visible) | This activity can be used to check if a certain element is visible on the screen.Note that this uses Automagica Portal and uses some advanced an fuzzy matching algorithms for finding identical elements.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Wait for an element to appear](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_appear) | Wait for an element that is defined the recorder\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Wait Vanish](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_vanish) | This activity allows the bot to wait for an element to vanish.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Read Text with Automagica Wand](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_text) | This activity allows the bot to detect and read the text of an element by using the Automagica Portal API with a provided sample ID.\n|\u003Cimg width=150\u002F>|  ‌‌|\n\n\n\n\n\n## Licensing\n\n### Copyright and licensing\nAll source code and other files in this repository, unless stated otherwise, are copyright of Netcall plc.\n\n### Commercial license\nFor more information on licensing, trials and commercial use see [this page](https:\u002F\u002Fautomagica.com\u002Fcontact\u002F)\n","![https:\u002F\u002Fautomagica.com)](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fautomagica_automagica_readme_6f61b7e16a2a.png)\n\n# Automagica \n\nAutomagica 项目始于 2018 年，旨在开发开源软件，确保机器人流程自动化技术能够惠及所有人。\n\n随着 Automagica 各个版本的发布，诸如 Wand 和 Portal 等更高级的功能需要一套服务基础设施来支持更可靠的机器人运行、先进的服务以及管理和控制功能。\n\n随着这些服务使用量的增加，服务层的托管和维护成本也随之上升。\n\n为了推动这些重要服务进入下一发展阶段，我们很高兴地宣布：2020 年 10月13 日，领先的低代码、客户互动及联络中心软件提供商 Netcall plc 已收购 Oakwood Technologies BV（以“Automagica”名义运营）。\n\nNetcall 将把 Automagica 的 RPA 集成到其 Liberty 平台中，从而提供 RPA、低代码和客户互动解决方案的强大组合。\n\nAutomagica Robot 现已不再依据 AGPL3 许可证条款提供。\n\n不过，我们不会停止对已部署机器人的服务支持。这些机器人将继续免费使用 Wand 和 OCR 功能，为期三个月，自今日（2020年10月13日）起算。\n\n现有 Automagica Portal 用户在未来三个月内也可免费访问该平台；在此期间，我们将为用户提供迁移到商业服务的选项。\n\n在此，我们衷心感谢所有为该项目做出贡献的人士。\n\n\n![热爱 Automagica 示例](https:\u002F\u002Fi.imgur.com\u002FC4M6LBl.gif)\n\n## 组件\nAutomagica 套件由以下组件构成：\n- __Automagica Bot__：负责执行自动化任务的运行时\u002F代理。\n- __Automagica Flow__：可视化流程设计器，可快速构建自动化流程，并全面支持 Python 代码。\n- __Automagica Wand__：基于 AI 的 UI 元素选择器。\n- __Automagica Lab__：基于 Jupyter Notebooks 的笔记本式自动化开发环境（需安装 Jupyter）。\n- __Automagica Portal__：用于管理机器人、凭据、自动化流程、日志等。\n\n![Portal 和 Flow](https:\u002F\u002Fi.imgur.com\u002Fps1Uhck.png)\n\n## 示例\n\n浏览器与 Excel 协同工作：\n\n![Excel 示例 Automagica](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fautomagica_automagica_readme_6f61b7e16a2a.gif)\n\n\n## 活动\nAutomagica 所有官方活动概览：\n\nProcess | Description\n------- | -----------\n**Cryptography** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Random key](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_key) | Generate random Fernet key.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-solid.svg\" width=\"20\"> [Encrypt text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.encrypt_text_with_key) | Encrypt text with (Fernet) key,\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-open-solid.svg\" width=\"20\"> [Decrypt text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.decrypt_text_with_key) | Dexrypt bytes-like object to string with (Fernet) key\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-solid.svg\" width=\"20\"> [Encrypt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.encrypt_file_with_key) | Encrypt file with (Fernet) key. Note that file will be unusable unless unlocked with the same key.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-open-solid.svg\" width=\"20\"> [Decrypt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.decrypt_file_with_key) | Decrypts file with (Fernet) key\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flock-solid.svg\" width=\"20\"> [Key from password](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_key_from_password) | Generate key based on password and salt. If both password and salt are known the key can be regenerated.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffingerprint-solid.svg\" width=\"20\"> [Hash from file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_hash_from_file) | Generate hash from file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffingerprint-solid.svg\" width=\"20\"> [Hash from text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_hash_from_text) | Generate hash from text. Keep in mind that MD5 is not cryptographically secure.\n**Random** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdice-solid.svg\" width=\"20\"> [Random number](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_number) | Random numbers can be integers (not a fractional number) or a float (fractional number).\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdigital-tachograph-solid.svg\" width=\"20\"> [Random data](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_data) | Generates all kinds of random data. Specifying locale changes format for some options\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcoins-solid.svg\" width=\"20\"> [Random boolean](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_boolean) | Generates a random boolean (True or False)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-tag-solid.svg\" width=\"20\"> [Random name](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_name) | Generates a random name. Adding a locale adds a more common name in the specified locale. Provides first name and last name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcomment-solid.svg\" width=\"20\"> [Random words](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_words) | Generates a random sentence. Specifying locale changes language and content based on locale.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmap-marker-solid.svg\" width=\"20\"> [Random address](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_address) | Generates a random address. Specifying locale changes random locations and streetnames based on locale.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fvolume-up-solid.svg\" width=\"20\"> [Random beep](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_beep) | Generates a random beep, only works on Windows\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcalendar-solid.svg\" width=\"20\"> [Random date](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_random_date) | Generates a random date.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcalendar-solid.svg\" width=\"20\"> [Today's date](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_date_today) | Generates today's date.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frandom-solid.svg\" width=\"20\"> [Generate unique identifier](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.generate_unique_identifier) | Generates a random UUID4 (universally unique identifier). \n**Output** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftv-solid.svg\" width=\"20\"> [Display overlay message](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.display_osd_message) | Display custom OSD (on-screen display) message. Can be used to display a message for a limited amount of time. Can be used for illustration, debugging or as OSD.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftv-solid.svg\" width=\"20\"> [Print message in console](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.print_console) | Print message in console. Can be used to display data in the Automagica Flow console\n**Browser** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fchrome.svg\" width=\"20\"> [Chrome](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Chrome) | Open Chrome Browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fimages-solid.svg\" width=\"20\"> [Save all images](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_all_images) | Save all images on current page in the Browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fchrome.svg\" width=\"20\"> [Browse to URL](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.browse_to) | Browse to URL.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Falign-center-solid.svg\" width=\"20\"> [Find elements by text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_elements_by_text) | Find all elements by their text. Text does not need to match exactly, part of text is enough.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Find all links](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_all_links) | Find all links on a webpage in the browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Find first link on a webpage](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_first_link) | Find first link on a webpage\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Get all text on webpage](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_text_on_webpage) | Get all the raw body text from current webpage\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhighlighter-solid.svg\" width=\"20\"> [Highlight element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.highlight) | Highlight elements in yellow in the browser\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-close-solid.svg\" width=\"20\"> [Exit the browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.exit) | Quit the browser by exiting gracefully. One can also use the native 'quit' function\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find all XPaths](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_xpaths) | Find all elements with specified xpath on a webpage in the the browser. Can also use native 'find_elements_by_xpath'\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find XPath in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_xpath) | Find all element with specified xpath on a webpage in the the browser. Can also use native 'find_elements_by_xpath'\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find class in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_class) | Find element with specified class on a webpage in the the browser. Can also use native 'find_element_by_class_name'\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find class in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_classes) | Find all elements with specified class on a webpage in the the browser. Can also use native 'find_elements_by_class_name' function\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find element in browser based on class and text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_class_and_by_text) | Find all elements with specified class and text on a webpage in the the browser.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Find id in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.by_id) | Find element with specified id on a webpage in the the browser. Can also use native 'find_element_by_id' function\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftimes-solid.svg\" width=\"20\"> [Switch to iframe in browser](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.switch_to_iframe) | Switch to an iframe in the browser\n**Credential Management** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Set credential](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_credential) | Add a credential which stores credentials locally and securely. All parameters should be Unicode text.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Delete credential](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_credential) | Delete a locally stored credential. All parameters should be Unicode text.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Get credential](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_credential) | Get a locally stored redential. All parameters should be Unicode text.\n**FTP** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-open-solid.svg\" width=\"20\"> [Create FTP connection (insecure)](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.FTP) | Can be used to automate activites for FTP\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdownload-solid.svg\" width=\"20\"> [Download file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.download_file) | Downloads a file from FTP server. Connection needs to be established first.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fupload-solid.svg\" width=\"20\"> [Upload file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.upload_file) | Upload file to FTP server\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-ol-solid.svg\" width=\"20\"> [List FTP files](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.enumerate_files) | Generate a list of all the files in the FTP directory\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-ol-solid.svg\" width=\"20\"> [Check FTP directory](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.directory_exists) | Check if FTP directory exists\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-plus-solid.svg\" width=\"20\"> [Create FTP directory](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.create_directory) | Create a FTP directory. Note that sufficient permissions are present\n**Keyboard** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkeyboard-solid.svg\" width=\"20\"> [Press key](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.press_key) | Press and release an entered key. Make sure your keyboard is on US layout (standard QWERTY).If you are using this on Mac Os you might need to grant access to your terminal application.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkeyboard-solid.svg\" width=\"20\"> [Press key combination](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.press_key_combination) | Press a combination of two or three keys simultaneously. Make sure your keyboard is on US layout (standard QWERTY).\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkeyboard-solid.svg\" width=\"20\"> [Type text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.typing) | Simulate keystrokes. If an element ID is specified, text will be typed in a specific field or element based on the element ID (vision) by the recorder.\n**Mouse** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-solid.svg\" width=\"20\"> [Get mouse coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_mouse_position) | Get the x and y pixel coordinates of current mouse position.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsearch-location-solid.svg\" width=\"20\"> [Display mouse position](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.display_mouse_position) | Displays mouse position in an overlay.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Mouse click](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click) | Clicks on an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Mouse click coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click_coordinates) | Clicks on an element based on pixel position determined by x and y coordinates. To find coordinates one could use display_mouse_position().\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Double mouse click coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.double_click_coordinates) | Double clicks on a pixel position determined by x and y coordinates.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Double mouse click](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.double_click) | Double clicks on an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Right click](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.right_click) | Right clicks on an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Right click coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.right_click_coordinates) | Right clicks on an element based pixel position determined by x and y coordinates.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Move mouse](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mouse_to) | Moves te pointer to an element based on the element ID (vision)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Move mouse coordinates](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mouse_to_coordinates) | Moves te pointer to an element based on the pixel position determined by x and y coordinates\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Move mouse relative](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mouse_relative) | Moves the mouse an x- and y- distance relative to its current pixel position.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Drag mouse](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.drag_mouse_to_coordinates) | Drags mouse to an element based on pixel position determined by x and y coordinates\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-solid.svg\" width=\"20\"> [Drag mouse](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.drag_mouse_to) | Drags mouse to an element based on the element ID (vision)\n**Image** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcrop-alt-solid.svg\" width=\"20\"> [Random screen snippet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.random_screen_snippet) | Take a random square snippet from the current screen. Mainly for testing and\u002For development purposes.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fexpand-solid.svg\" width=\"20\"> [Screenshot](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.take_screenshot) | Take a screenshot of current screen.\n**Folder Operations** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsearch-solid.svg\" width=\"20\"> [List files in folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_files_in_folder) | List all files in a folder (and subfolders)\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-plus-solid.svg\" width=\"20\"> [Create folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.create_folder) | Creates new folder at the given path.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Rename folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.rename_folder) | Rename a folder\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-open-solid.svg\" width=\"20\"> [Open a folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.show_folder) | Open a folder with the default explorer.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Move a folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_folder) | Moves a folder from one place to another.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-minus-solid.svg\" width=\"20\"> [Remove folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.remove_folder) | Remove a folder including all subfolders and files. For the function to work optimal, all files and subfolders in the main targetfolder should be closed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-minus-solid.svg\" width=\"20\"> [Empty folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.empty_folder) | Remove all contents from a folderFor the function to work optimal, all files and subfolders in the main targetfolder should be closed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Checks if folder exists](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.folder_exists) | Check whether folder exists or not, regardless if folder is empty or not.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffolder-solid.svg\" width=\"20\"> [Copy a folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.copy_folder) | Copies a folder from one place to another.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farchive-solid.svg\" width=\"20\"> [Zip](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.zip_folder) | Zip folder and its contents. Creates a .zip file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farchive-solid.svg\" width=\"20\"> [Unzip](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.unzip) | Unzips a file or folder from a .zip file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclock-solid.svg\" width=\"20\"> [Return most recent file in directory](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.most_recent_file) | Return most recent file in directory\n**Delay** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhourglass-solid.svg\" width=\"20\"> [Wait](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait) | Make the robot wait for a specified number of seconds. Note that this activity is blocking. This means that subsequent activities will not occur until the the specified waiting time has expired.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhourglass-solid.svg\" width=\"20\"> [Wait for folder](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_folder_exists) | Waits until a folder exists.Note that this activity is blocking and will keep the system waiting.\n**Word Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Start Word Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Word) | For this activity to work, Microsoft Office Word needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save active Word document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save As](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save active Word document to a specific location\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Append text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.append_text) | Append text at end of Word document.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Replace text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.replace_text) | Can be used for example to replace arbitrary placeholder value. For example whenusing template document, using 'XXXX' as a placeholder. Take note that all strings are case sensitive.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Read all text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_all_text) | Read all the text from a document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-pdf-solid.svg\" width=\"20\"> [Export to PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_pdf) | Export the document to PDF\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhtml5.svg\" width=\"20\"> [Export to HTML](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_html) | Export to HTML\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fheading-solid.svg\" width=\"20\"> [Set footers](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_footers) | Set the footers of the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsubscript-solid.svg\" width=\"20\"> [Set headers](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_headers) | Set the headers of the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Quit Word](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | This closes Word, make sure to use 'save' or 'save_as' if you would like to save before quitting.\n**Word File** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Read and Write Word files](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.WordFile) | These activities can read, write and edit Word (docx) files without the need of having Word installed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Read all text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_all_text) | Read all the text from the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Append text](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.append_text) | Append text at the end of the document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save file on specified path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Set headers](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_headers) | Set headers of Word document\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-word-solid.svg\" width=\"20\"> [Replace all](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.replace_text) | Replaces all occurences of a placeholder text in the document with a replacement text.\n**Outlook Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Start Outlook Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Outlook) | For this activity to work, Outlook needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Send e-mail](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_mail) | Send an e-mail using Outlook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Retrieve folders](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_folders) | Retrieve list of folders from Outlook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Retrieve e-mails](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_mails) | Retrieve list of messages from Outlook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Delete e-mails](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_mails) | Deletes e-mail messages in a certain folder. Can be specified by searching on subject, body or sender e-mail.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Move e-mails](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_mails) | Move e-mail messages in a certain folder. Can be specified by searching on subject, body or sender e-mail.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Save attachments](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_attachments) | Save all attachments from certain folder\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Retrieve contacts](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_contacts) | Retrieve all contacts\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Add a contact](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_contact) | Add a contact to Outlook contacts\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Quit](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | Close the Outlook application\n**Excel Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Start Excel Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.Excel) | For this activity to work, Microsoft Office Excel needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Add worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_worksheet) | Adds a worksheet to the current workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_worksheet) | Activate a worksheet in the current Excel document by name\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save the current workbook. Defaults to homedir\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save the current workbook to a specific path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_cell) | Write to a specific cell in the currently active workbook and active worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_cell) | Read a cell from the currently active workbook and active worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write range](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_range) | Write to a specific range in the currently active worksheet in the active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read range](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_range) | Read a range of cells from the currently active worksheet in the active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Run macro](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_macro) | Run a macro by name from the currently active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Get worksheet names](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_worksheet_names) | Get names of all the worksheets in the currently active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Get table](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_table) | Get table data from the currently active worksheet by name of the table\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate range](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_range) | Activate a particular range in the currently active workbook\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell down](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_down) | Activates the first empty cell going down\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell right](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_right) | Activates the first empty cell going right\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell left](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_left) | Activates the first empty cell going left\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate first empty cell up](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_first_empty_cell_up) | Activates the first empty cell going up\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write cell formula](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_cell_formula) | Write a formula to a particular cell\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read cell formula](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_cell_formula) | Read the formula from a particular cell\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Insert empty row](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.insert_empty_row) | Inserts an empty row to the currently active worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Insert empty column](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.insert_empty_column) | Inserts an empty column in the currently active worksheet. Existing columns will shift to the right.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Delete row in Excel](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_row) | Deletes a row from the currently active worksheet. Existing data will shift up.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Delete column](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_column) | Delete a column from the currently active worksheet. Existing columns will shift to the left.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Export to PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_pdf) | Export to PDF\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Insert data as table](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.insert_data_as_table) | Insert list of dictionaries as a table in Excel\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_worksheet) | Read data from a worksheet as a list of lists\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Quit Excel](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | This closes Excel, make sure to use 'save' or 'save_as' if you would like to save before quitting.\n**Excel File** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read and Write xlsx files.](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.ExcelFile) | This activity can read, write and edit Excel (xlsx) files without the need of having Excel installed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Export file to dataframe](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.to_dataframe) | Export to pandas dataframe\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Activate worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.activate_worksheet) | Activate a worksheet. By default the first worksheet is activated.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save file as\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Save as](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Write cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_cell) | Write a cell based on column and row\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Read cell](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_cell) | Read a cell based on column and row\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Add worksheet](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_worksheet) | Add a worksheet\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-excel-solid.svg\" width=\"20\"> [Get worksheet names](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_worksheet_names) | Get worksheet names\n**PowerPoint Application** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Start PowerPoint Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.PowerPoint) | For this activity to work, PowerPoint needs to be installed on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Save PowerPoint](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save_as) | Save PowerPoint Slidedeck\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Save PowerPoint](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.save) | Save PowerPoint Slidedeck\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Close PowerPoint Application](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | Close PowerPoint\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Add PowerPoint Slides](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_slide) | Adds slides to a presentation\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Slide count](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.number_of_slides) | Returns the number of slides\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Text to slide](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.add_text) | Add text to a slide\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Delete slide](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.delete_slide) | Delete a slide\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Replace all occurences of text in PowerPoint slides](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.replace_text) | Can be used for example to replace arbitrary placeholder value in a PowerPoint.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [PowerPoint to PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_to_pdf) | Export PowerPoint presentation to PDF file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-powerpoint-solid.svg\" width=\"20\"> [Slides to images](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.export_slides_to_images) | Export PowerPoint slides to seperate image files\n**Office 365** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fenvelope-solid.svg\" width=\"20\"> [Send email Office Outlook 365](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_email_with_outlook365) | Send email Office Outlook 365\n**Salesforce** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsalesforce.svg\" width=\"20\"> [Salesforce API](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.salesforce_api_call) | Activity to make calls to Salesforce REST API.\n**E-mail (SMTP)** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmail-bulk-solid.svg\" width=\"20\"> [Mail with SMTP](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_mail_smtp) | This function lets you send emails with an e-mail address.\n**Windows OS** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Freadme.svg\" width=\"20\"> [Find window with specific title](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_window_title) | Find a specific window based on the name, either a perfect match or a partial match.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Login to Windows Remote Desktop](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.start_remote_desktop) | Create a RDP and login to Windows Remote Desktop\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Stop Windows Remote Desktop](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.close_remote_desktop) | Stop Windows Remote Desktop\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Set Windows password](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_user_password) | Sets the password for a Windows user.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fpassport-solid.svg\" width=\"20\"> [Check Windows password](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.validate_user_password) | Validates a Windows user password if it is correct\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-lock-solid.svg\" width=\"20\"> [Lock Windows](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.lock_windows) | Locks Windows requiring login to continue.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-solid.svg\" width=\"20\"> [Check if Windows logged in](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_logged_in) | Checks if the current user is logged in and not on the lockscreen. Most automations do not work properly when the desktop is locked.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-solid.svg\" width=\"20\"> [Check if Windows is locked](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_desktop_locked) | Checks if the current user is locked out and on the lockscreen. Most automations do not work properly when the desktop is locked.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fuser-solid.svg\" width=\"20\"> [Get Windows username](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_username) | Get current logged in user's username\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclipboard-check-solid.svg\" width=\"20\"> [Set clipboard](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_to_clipboard) | Set any text to the Windows clipboard.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclipboard-list-solid.svg\" width=\"20\"> [Get clipboard](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_from_clipboard) | Get the text currently in the Windows clipboard\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclipboard-solid.svg\" width=\"20\"> [Empty clipboard](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.clear_clipboard) | Empty text from clipboard. Getting clipboard data after this should return in None\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcogs-solid.svg\" width=\"20\"> [Run VBSscript](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_vbs_script) | Run a VBScript file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fvolume-up-solid.svg\" width=\"20\"> [Beep](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.beep) | Make a beeping sound. Make sure your volume is up and you have hardware connected.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [Get all network interface names](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_all_network_interface_names) | Returns a list of all network interfaces of the current machine\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [Enable network interface](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.enable_network_interface) | Enables a network interface by its name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [Disable network interface](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.disable_network_interface) | Disables a network interface by its name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Get default printer](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_default_printer_name) | Returns the name of the printer selected as default\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Set default printer](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_default_printer) | Set the default printer.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Remove printer](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.remove_printer) | Removes a printer by its name\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Get service status](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_service_status) | Returns the status of a service on the machine\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Start a service](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.start_service) | Starts a Windows service\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Stop a service](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.stop_service) | Stops a Windows service\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Set window to foreground](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_window_to_foreground) | Sets a window to foreground by its title.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Get foreground window title](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_foreground_window_title) | Retrieve the title of the current foreground window\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Close window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.close_window) | Closes a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Maximize window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.maximize_window) | Maximizes a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Restore window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.restore_window) | Restore a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Minimize window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.minimize_window) | Minimizes a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Resize window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.resize_window) | Resize a window by its title\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-restore-solid.svg\" width=\"20\"> [Hide window](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.hide_window) | Hides a window from the user desktop by using it's title\n**Terminal** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fterminal-solid.svg\" width=\"20\"> [Run SSH command](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_ssh_command) | Runs a command over SSH (Secure Shell)\n**SNMP** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fethernet-solid.svg\" width=\"20\"> [SNMP Get](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.snmp_get) | Retrieves data from an SNMP agent using SNMP (Simple Network Management Protocol)\n**Active Directory** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Faudio-description-solid.svg\" width=\"20\"> [AD interface](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.ActiveDirectory) | Interface to Windows Active Directory through ADSI. Connects to the AD domain to which the machine is joined by default.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Faudio-description-solid.svg\" width=\"20\"> [Get AD object by name](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_object_by_distinguished_name) | Interface to Windows Active Directory through ADSI\n**Utilities** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fhome-solid.svg\" width=\"20\"> [Get user home path](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.home_path) | Returns the current user's home path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdesktop-solid.svg\" width=\"20\"> [Get desktop path](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.desktop_path) | Returns the current user's desktop path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdownload-solid.svg\" width=\"20\"> [Get downloads path](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.downloads_path) | Returns the current user's default download path\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-solid.svg\" width=\"20\"> [Open file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.open_file) | Opens file with default programs\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fdesktop-solid.svg\" width=\"20\"> [Set wallpaper](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_wallpaper) | Set Windows desktop wallpaper with the the specified image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcloud-download-alt-solid.svg\" width=\"20\"> [Download file from a URL](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.download_file_from_url) | Download file from a URL\n**System** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-contract-solid.svg\" width=\"20\"> [Rename a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.rename_file) | This activity will rename a file. If the the desired name already exists in the folder file will not be renamed. Make sure to add the exstention to specify filetype.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-export-solid.svg\" width=\"20\"> [Move a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.move_file) | If the new location already contains a file with the same name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftrash-solid.svg\" width=\"20\"> [Remove a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.remove_file) | Remove a file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftasks-solid.svg\" width=\"20\"> [Check if file exists](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.file_exists) | This function checks whether the file with the given path exists.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-alt-solid.svg\" width=\"20\"> [Wait until a file exists.](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_file_exists) | Note that this activity is blocking and will keep the system waiting.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-solid.svg\" width=\"20\"> [List to .txt](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.write_list_to_file) | Writes a list to a  text (.txt) file.Every element of the entered list is written on a new line of the text file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fth-list-solid.svg\" width=\"20\"> [Read list from .txt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_list_from_txt) | This activity reads the content of a .txt file to a list and returns that list.Every new line from the .txt file becomes a new element of the list. The activity willnot work if the entered path is not attached to a .txt file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fth-list-solid.svg\" width=\"20\"> [Read .txt file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_from_txt) | This activity reads a .txt file and returns the content\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ftasks-solid.svg\" width=\"20\"> [Append to .txt](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.append_line) | Append a text line to a file and creates the file if it does not exist yet.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ffile-alt-solid.svg\" width=\"20\"> [Make text file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.make_text_file) | Initialize text file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcopy-solid.svg\" width=\"20\"> [Read .txt file with newlines to list](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_text_file_to_list) | Read a text file to a Python list-object\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcopy-solid.svg\" width=\"20\"> [Copy a file](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.copy_file) | Copies a file from one place to another.If the new location already contains a file with the same name, a random 4 character uid is added to the name.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Finfo-solid.svg\" width=\"20\"> [Get file extension](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_file_extension) | Get extension of a file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fprint-solid.svg\" width=\"20\"> [Print](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.send_to_printer) | Send file to default printer to priner. This activity sends a file to the printer. Make sure to have a default printer set up.\n**PDF** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fglasses-solid.svg\" width=\"20\"> [Text from PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_text_from_pdf) | Extracts the text from a PDF. This activity reads text from a pdf file. Can only read PDF files that contain a text layer.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fobject-ungroup-solid.svg\" width=\"20\"> [Merge PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.join_pdf_files) | Merges multiple PDFs into a single file\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcut-solid.svg\" width=\"20\"> [Extract page from PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.extract_page_range_from_pdf) | Extracts a particular range of a PDF to a separate file.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Ficons-solid.svg\" width=\"20\"> [Extract images from PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.extract_images_from_pdf) | Save a specific page from a PDF as an image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fstamp-solid.svg\" width=\"20\"> [Watermark a PDF](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.apply_watermark_to_pdf) | Watermark a PDF\n**System Monitoring** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmicrochip-solid.svg\" width=\"20\"> [CPU load](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_cpu_load) | Get average CPU load for all cores.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcalculator-solid.svg\" width=\"20\"> [Count CPU](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_number_of_cpu) | Get the number of CPU's in the current system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwave-square-solid.svg\" width=\"20\"> [CPU frequency](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_cpu_frequency) | Get frequency at which CPU currently operates.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fserver-solid.svg\" width=\"20\"> [CPU Stats](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_cpu_stats) | Get CPU statistics\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmemory-solid.svg\" width=\"20\"> [Memory statistics](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_memory_stats) | Get  memory statistics\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsave-solid.svg\" width=\"20\"> [Disk stats](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_disk_stats) | Get disk statistics of main disk\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fsave-solid.svg\" width=\"20\"> [Partition info](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_disk_partitions) | Get disk partition info\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclock-solid.svg\" width=\"20\"> [Boot time](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_boot_time) | Get most recent boot time\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fclock-solid.svg\" width=\"20\"> [Uptime](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_time_since_last_boot) | Get uptime since last boot\n**Image Processing** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fimages-solid.svg\" width=\"20\"> [Show image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.show_image) | Displays an image specified by the path variable on the default imaging program.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fundo-solid.svg\" width=\"20\"> [Rotate image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.rotate_image) | Rotate an image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fexpand-arrows-alt-solid.svg\" width=\"20\"> [Resize image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.resize_image) | Resizes the image specified by the path variable.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fexpand-arrows-alt-solid.svg\" width=\"20\"> [Get image width](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_image_width) | Get with of image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Farrows-alt-v-solid.svg\" width=\"20\"> [Get image height](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_image_height) | Get height of image\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcrop-solid.svg\" width=\"20\"> [Crop image](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.crop_image) | Crops the image specified by path to a region determined by the box variable.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcaret-up-solid.svg\" width=\"20\"> [Mirror image horizontally](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.mirror_image_horizontally) | Mirrors an image with a given path horizontally from left to right.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcaret-right-solid.svg\" width=\"20\"> [Mirror image vertically](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.mirror_image_vertically) | Mirrors an image with a given path vertically from top to bottom.\n**Process** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcog-solid.svg\" width=\"20\"> [Windows run](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_manual) | Use Windows Run to boot a processNote this uses keyboard inputs which means this process can be disrupted by interfering inputs\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fplay-solid.svg\" width=\"20\"> [Run process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run) | Use subprocess to open a windows process\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fcogs-solid.svg\" width=\"20\"> [Check if process is running](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_process_running) | Check if process is running. Validates if given process name (name) is currently running on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Flist-solid.svg\" width=\"20\"> [Get running processes](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_running_processes) | Get names of unique processes currently running on the system.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fwindow-close-solid.svg\" width=\"20\"> [Kill process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.kill_process) | Kills a process forcefully\n**Optical Character Recognition (OCR)** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Freadme.svg\" width=\"20\"> [Get text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.extract_text_ocr) | This activity extracts all text from the current screen or an image if a path is specified.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fglasses-solid.svg\" width=\"20\"> [Find text on screen with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.find_text_on_screen_ocr) | This activity finds position (coordinates) of specified text on the current screen using OCR.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Click on text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click_on_text_ocr) | This activity clicks on position (coordinates) of specified text on the current screen using OCR.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Double click on text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.double_click_on_text_ocr) | This activity double clicks on position (coordinates) of specified text on the current screen using OCR.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fmouse-pointer-solid.svg\" width=\"20\"> [Right click on text with OCR](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.right_click_on_text_ocr) | This activity Right clicks on position (coordinates) of specified text on the current screen using OCR.\n**UiPath** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Execute a UiPath process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.execute_uipath_process) | This activity allows you to execute a process designed with the UiPath Studio. All console output from the Write Line activity will be printed as output.\n**AutoIt** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Execute a AutoIt script](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_autoit_script) | This activity allows you to run an AutoIt script. If you use the ConsoleWrite function, the output will be presented to you.\n**Alternative frameworks** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Execute a Robot Framework test case](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.execute_robotframework_test) | This activity allows you to run a Robot Framework test case. Console output of the test case will be printed.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Run a Blue Prism process](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_blueprism_process) | This activity allows you to run a Blue Prism process.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Run an Automation Anywhere task](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.run_automationanywhere_task) | This activity allows you to run an Automation Anywhere task.\n**General** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Raise exception](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.raise_exception) | Raises an exception\n**SAP GUI** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Quit SAP GUI](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.quit) | Quits the SAP GUI completely and forcibly.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Log in to SAP GUI](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.login) | Logs in to an SAP system on SAP GUI.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Click on a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.click_sap) | Clicks on an identifier in the SAP GUI.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Get text from a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_text) | Retrieves the text from a SAP GUI element.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Set text of a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.set_text) | Sets the text of a SAP GUI element.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fbriefcase-solid.svg\" width=\"20\"> [Highlights a SAP GUI element](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.highlight) | Temporarily highlights a SAP GUI element\n**Portal** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Frobot-solid.svg\" width=\"20\"> [Create a new job in the Automagica Portal](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.create_new_job_in_portal) | This activity creates a new job in the Automagica Portal for a given process. The bot performing this activity needs to be in the same team as the process it creates a job for.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Fkey-solid.svg\" width=\"20\"> [Get a credential from the Automagica Portal](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.get_credential_from_portal) | This activity retrieves a credential from the Automagica Portal.\n**Vision** | ‌‌ \n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Check if element is visible on screen](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.is_visible) | This activity can be used to check if a certain element is visible on the screen.Note that this uses Automagica Portal and uses some advanced an fuzzy matching algorithms for finding identical elements.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Wait for an element to appear](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_appear) | Wait for an element that is defined the recorder\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Wait Vanish](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.wait_vanish) | This activity allows the bot to wait for an element to vanish.\n\u003Cimg src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fline-awesome@1.3.0\u002Fsvg\u002Feye-solid.svg\" width=\"20\"> [Read Text with Automagica Wand](https:\u002F\u002Fautomagica.readthedocs.io\u002Factivities.html#automagica.activities.read_text) | This activity allows the bot to detect and read the text of an element by using the Automagica Portal API with a provided sample ID.\n|\u003Cimg width=150\u002F>|  ‌‌|\n\n## 许可\n\n### 版权与许可\n本仓库中的所有源代码及其他文件，除非另有说明，均受 Netcall plc 版权保护。\n\n### 商业许可\n有关许可、试用及商业使用的更多信息，请参阅[此页面](https:\u002F\u002Fautomagica.com\u002Fcontact\u002F)。","# Automagica 快速上手指南\n\n> **⚠️ 重要提示**：Automagica 开源项目已于 2020 年 10 月被 Netcall plc 收购。原有的 AGPL3 开源许可已停止，官方云服务（如 Portal、Wand）仅对现有用户提供有限时间的免费过渡期，随后将转为商业服务。本指南基于其开源架构整理，适用于本地开发与学习，生产环境请评估商业授权或迁移方案。\n\nAutomagica 是一个旨在让机器人流程自动化（RPA）技术普及化的开源项目。它结合了 Python 的强大功能与可视化流程设计，支持浏览器自动化、文件处理、数据生成等多种任务。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Windows 10\u002F11（推荐，部分功能如声音提示仅限 Windows），Linux 或 macOS。\n*   **Python 版本**：Python 3.6 或更高版本。\n*   **前置依赖**：\n    *   `pip` (Python 包管理工具)\n    *   `Google Chrome` 浏览器及其对应的 `ChromeDriver`（用于浏览器自动化）。\n    *   `Jupyter Notebook`（如果计划使用 Automagica Lab 进行开发）。\n\n**国内加速建议**：\n在安装 Python 依赖时，建议使用清华或阿里云镜像源以提升下载速度。\n\n## 安装步骤\n\n### 1. 安装核心库\n\n打开终端（Terminal）或命令提示符（CMD），运行以下命令安装 Automagica 核心包：\n\n```bash\npip install automagica -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 2. 安装浏览器驱动\n\nAutomagica 默认依赖 Chrome 进行网页自动化。请确保已安装 Google Chrome 浏览器，并下载对应版本的 `chromedriver`。\n\n将 `chromedriver` 的可执行文件路径添加到系统环境变量 `PATH` 中，或者将其放置在项目根目录下。\n\n> **提示**：也可以使用 `webdriver-manager` 自动管理驱动：\n> ```bash\n> pip install webdriver-manager -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n### 3. 可选组件安装\n\n如果您需要使用笔记本风格的开发环境（Automagica Lab），请安装 Jupyter：\n\n```bash\npip install jupyter -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\nAutomagica 的核心是通过简单的 Python 函数调用（Activities）来执行自动化任务。您可以直接在 Python 脚本或 Jupyter Notebook 中运行。\n\n### 示例：浏览器操作与 Excel 数据处理\n\n以下示例演示了如何打开浏览器、访问网页、提取文本，并生成随机数据。\n\n```python\nfrom automagica import *\n\n# 1. 打开 Chrome 浏览器\nChrome()\n\n# 2. 访问指定 URL\nbrowse_to('https:\u002F\u002Fwww.example.com')\n\n# 3. 获取网页上的所有文本内容\npage_text = get_text_on_webpage()\nprint_console(page_text)\n\n# 4. 查找页面上的第一个链接\nfirst_link = find_first_link()\nprint_console(f\"First link found: {first_link}\")\n\n# 5. 生成一些随机测试数据（例如随机姓名和日期）\nrandom_name = generate_random_name(locale='zh_CN') # 尝试生成中文名字\nrandom_date = generate_random_date()\n\nprint_console(f\"Generated Name: {random_name}\")\nprint_console(f\"Generated Date: {random_date}\")\n\n# 6. 在屏幕上显示一条临时消息（OSD）\ndisplay_osd_message(\"自动化任务完成！\", duration=3)\n\n# 7. 优雅地关闭浏览器\nexit()\n```\n\n### 进阶：使用 Flow 进行可视化编排\n\n如果您更喜欢低代码方式，可以启动 **Automagica Flow**（如果已安装图形界面组件）：\n\n1.  在命令行输入 `automagica flow` 启动可视化设计器。\n2.  通过拖拽组件构建流程。\n3.  在需要复杂逻辑的地方，直接嵌入上述 Python 代码片段。\n\n### 常用活动速查\n\n*   **文件加密\u002F解密**: `encrypt_text_with_key()`, `decrypt_file_with_key()`\n*   **随机数据**: `generate_random_number()`, `generate_random_address()`\n*   **元素定位**: `by_xpath()`, `by_class()`, `find_elements_by_text()`\n*   **调试输出**: `print_console()`, `display_osd_message()`\n\n通过以上步骤，您即可快速搭建本地的 Automagica 开发环境并开始编写自动化脚本。","某电商公司的财务专员每天需从多个供应商门户下载发票 PDF，提取关键数据并录入 Excel 报表，同时需对敏感文件进行加密归档。\n\n### 没有 automagica 时\n- 员工必须手动登录不同网站下载文件，耗时且容易因疲劳输错网址或账号。\n- 依靠人工肉眼识别 PDF 中的金额和日期，效率低下且极易出现转录错误。\n- 缺乏统一的流程管理，一旦某个步骤出错（如网页元素变动），整个任务中断且难以排查。\n- 敏感财务文件分散在本地文件夹，缺乏自动化的加密机制，存在数据泄露风险。\n- 每次新增供应商都需要重新编写复杂的脚本，维护成本极高，非技术人员无法参与优化。\n\n### 使用 automagica 后\n- 利用 Automagica Bot 自动登录各门户并批量下载发票，无需人工干预，释放人力。\n- 通过 AI 驱动的 Automagica Wand 智能识别并抓取 PDF 关键字段，准确率提升至 99% 以上。\n- 借助 Automagica Flow 可视化设计流程，当网页结构变化时可快速调整节点，系统稳定性大幅增强。\n- 内置加密活动（Encrypt file）自动对归档文件进行 Fernet 加密，确保数据存储符合安全合规要求。\n- 业务人员可通过低代码界面直接修改自动化逻辑，无需依赖专业开发团队，响应速度显著加快。\n\nautomagica 将繁琐重复的财务流程转化为稳定、安全且可自我进化的智能自动化闭环，让企业真正实现了降本增效。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fautomagica_automagica_95ac7415.png","Automagica","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fautomagica_98603e17.png","Automate any UI",null,"mail@automagica.com","https:\u002F\u002Fautomagica.com","https:\u002F\u002Fgithub.com\u002Fautomagica",[22],{"name":23,"color":24,"percentage":25},"Python","#3572A5",100,3082,489,"2026-04-08T16:43:26",5,"Windows","未说明",{"notes":33,"python":31,"dependencies":34},"该项目已于 2020 年 10 月 13 日被 Netcall plc 收购，不再作为开源软件（AGPL3 许可）提供。部分功能（如 Random beep）明确仅在 Windows 上有效。Automagica Lab 组件需要预先安装 Jupyter。原有的免费服务仅对已部署用户保留三个月过渡期。",[35],"Jupyter (用于 Automagica Lab)",[37,38,39,40],"图像","开发框架","其他","Agent",[42,43,44,45,46,47,48,49,50,6,51,52,53],"rpa","robot","python","ai","desktop-automation","office-automation","macros","web-automation","automation","automagica-portal","uipath","autoit",2,"ready","2026-03-27T02:49:30.150509","2026-04-10T10:31:12.851868",[59,64,69,74,79,84],{"id":60,"question_zh":61,"answer_zh":62,"source_url":63},27486,"为什么在调用 OCR 功能（ExtractTextFromImage）时出现 FileNotFoundError: [WinError 2] 系统找不到指定的文件？","该错误通常是因为未正确安装 Tesseract OCR 引擎或未将其添加到系统环境变量中。请确保：1. 按照 README.md 中的说明安装了 Tesseract；2. 将 Tesseract 可执行文件的路径添加到系统的 PATH 环境变量中；3. 设置环境变量后，重启计算机以确保生效。如果问题依旧，可能是 PyTesseract 无法找到可执行文件，建议在 PyTesseract 仓库提交复现步骤。","https:\u002F\u002Fgithub.com\u002Fautomagica\u002Fautomagica\u002Fissues\u002F41",{"id":65,"question_zh":66,"answer_zh":67,"source_url":68},27487,"如何在 Mac OS X 上安装 Automagica？遇到 sty 或 pywin32 依赖缺失怎么办？","在 Mac OS X 上安装时可能会遇到依赖问题，因为某些包（如 pywin32）仅适用于 Windows，或者特定版本（如 sty==1.0.0b2）在 macOS 上不可用。社区用户报告了在使用 Python 2.7 或 3.7 时出现\"No matching distribution found\"错误。目前该问题在原始项目中可能尚未完全解决，建议检查是否可以使用兼容的 Python 版本，或者考虑该项目已转向闭源，寻找开源分支（如 Robocorp）作为替代方案。","https:\u002F\u002Fgithub.com\u002Fautomagica\u002Fautomagica\u002Fissues\u002F31",{"id":70,"question_zh":71,"answer_zh":72,"source_url":73},27488,"使用 pip 或 PyCharm 安装时遇到 openssl\u002Fopensslv.h 错误如何解决？","如果在通过 pip 或 PyCharm 安装时遇到关于 'openssl\u002Fopensslv.h' 的错误（通常在安装 cryptography 库时），这通常是因为缺少必要的编译工具。建议尝试以下方法：1. 使用官方门户（Portal）提供的 Windows 一键安装程序；2. 如果是手动安装，可能需要先安装 Visual Studio Community 2019 并包含 C++ 构建工具，以提供必要的头文件和编译器支持。","https:\u002F\u002Fgithub.com\u002Fautomagica\u002Fautomagica\u002Fissues\u002F127",{"id":75,"question_zh":76,"answer_zh":77,"source_url":78},27489,"Jupyter 无法打开或点击编辑脚本无反应（CMD 窗口闪退）怎么办？","当点击编辑列表中的脚本时，如果 CMD 窗口弹出名为\"Python\"但随即消失且无反应，可以尝试在命令行（CMD）中手动运行相关的启动命令。有用户反馈，通过在 CMD 中成功运行一次命令后，再点击门户中的\"edit\"按钮即可正常打开编辑器。如果问题持续，建议重新安装软件、删除 Program Files 文件夹、重启电脑或重装 Python，但最有效的方法通常是确认后台命令能否在终端手动执行成功。","https:\u002F\u002Fgithub.com\u002Fautomagica\u002Fautomagica\u002Fissues\u002F99",{"id":80,"question_zh":81,"answer_zh":82,"source_url":83},27490,"如何正确使用 API Trigger？为什么返回 404 错误？","API 请求返回 404 通常是因为端点 URL 不正确。正确的 API 请求应发送至 \u002Fapi\u002Ftrigger-endpoint，而不是 \u002Fapi。此外，建议使用 RESTful 客户端进行测试：Google Chrome 用户可安装 Postman 插件，Firefox 或 Safari 用户可安装 RESTClient 插件。在发送请求时，需确保使用了正确的认证密钥（Bearer token），并参考门户中提供的 Python 示例代码进行调试。","https:\u002F\u002Fgithub.com\u002Fautomagica\u002Fautomagica\u002Fissues\u002F96",{"id":85,"question_zh":86,"answer_zh":87,"source_url":88},27491,"Automagica 项目停止开源了吗？社区是否有替代方案？","是的，原项目创建者已将代码转为闭源，导致 GitHub 上的库消失。对于希望继续使用开源 RPA 的用户，社区推荐关注 Robocorp。Robocorp 支持基于 Python 和 Robot Framework 的开源 RPA 工具，并提供编排平台来运行 Automagica 机器人。此外，社区成员曾提议分叉（fork）该项目并以不同名称维护开源版本，但目前主要推荐的替代方案是迁移到 Robocorp 生态系统。","https:\u002F\u002Fgithub.com\u002Fautomagica\u002Fautomagica\u002Fissues\u002F146",[],[91,101,109,118,126,135],{"id":92,"name":93,"github_repo":94,"description_zh":95,"stars":96,"difficulty_score":97,"last_commit_at":98,"category_tags":99,"status":55},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[40,38,37,100],"数据工具",{"id":102,"name":103,"github_repo":104,"description_zh":105,"stars":106,"difficulty_score":97,"last_commit_at":107,"category_tags":108,"status":55},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[38,37,40],{"id":110,"name":111,"github_repo":112,"description_zh":113,"stars":114,"difficulty_score":54,"last_commit_at":115,"category_tags":116,"status":55},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",148568,"2026-04-09T23:34:24",[38,40,117],"语言模型",{"id":119,"name":120,"github_repo":121,"description_zh":122,"stars":123,"difficulty_score":54,"last_commit_at":124,"category_tags":125,"status":55},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[38,37,40],{"id":127,"name":128,"github_repo":129,"description_zh":130,"stars":131,"difficulty_score":54,"last_commit_at":132,"category_tags":133,"status":55},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[134,40,37,38],"插件",{"id":136,"name":137,"github_repo":138,"description_zh":139,"stars":140,"difficulty_score":54,"last_commit_at":141,"category_tags":142,"status":55},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[134,38]]