Raycast Script Commands:釋放 Mac 效率的魔力

Raycast Script Commands

Raycast Script Commands:釋放 Mac 效率的魔力

建議還沒使用過 Raycast 的朋友可以先參考這篇:


各位效率至上的朋友們,如果你已經熟悉了 Raycast 的基本功能,那麼是時候揭開它更強大的一面了 – 腳本功能。我最近因為組內的一些事項需要大量用到腳本功能,所以不管在 App script 或者 Raycast 上都研究了許多,至於深度就不要太期待了… 一起來看看如何通過編寫自定義腳本來真正釋放你 Mac 的真正的效率吧!。


一、Raycast Script Commands

Raycast 的腳本功能允許你創建自定義的命令,以執行各種複雜的任務。無論是自動化日常工作流程,還是建立特定於你工作的工具,Raycast 腳本都能幫你實現。

為什麼要使用Raycast腳本?

  1. 自動化重複任務:將日常重複的操作編碼為腳本,熱鍵一按、一鍵執行。
  2. 建立自定義工具:開發專屬於你工作流程的工具。
  3. 提高工作效率:通過快速訪問和執行複雜操作,節省寶貴的時間。
  4. 整合多個應用和服務:將不同的工具和服務整合到一個工作流程中。

二、Raycast支持的腳本語言

Raycast支持多種腳本語言,每種語言都有其獨特的優勢和適用場景。讓我們來了解一下每種語言:

1. Bash:命令行的老朋友

優勢:

  • 運行速度快
  • 適合系統級操作和文件處理
  • 幾乎所有 Unix / Linux 系統都支持

最佳使用場景:

  • 執行系統命令
  • 批量文件操作
  • 快速的文字處理任務

示範 script:

#!/bin/bash

# @raycast.schemaVersion 1
# @raycast.title 查看系統信息
# @raycast.mode fullOutput

system_profiler SPHardwareDataType

2. Python:多才多藝的全能選手

優勢:

  • 琳瑯滿目的第三方模組
  • 簡潔易讀的語法
  • 強大的數據處理能力

最佳使用場景:

  • 數據分析和處理
  • Web 爬蟲
  • 複雜的自動化任務

示範 script:

#!/usr/bin/env python3

# @raycast.schemaVersion 1
# @raycast.title 今日天氣
# @raycast.mode compact
# @raycast.argument1 { "type": "text", "placeholder": "城市名稱" }

import requests
import sys

city = sys.argv[1]
api_key = "YOUR_API_KEY"
url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"

response = requests.get(url)
data = response.json()

if response.status_code == 200:
    print(f"{city}今日天氣: {data['weather'][0]['main']}, 溫度: {data['main']['temp']}°C")
else:
    print("獲取天氣消息失敗,請檢查城市名稱或網路連接。")

3. Ruby:優雅且富有表現力

優勢:

  • 語法優雅,易讀易寫
  • 強大的文本處理能力
  • 適合快速原型開發

最佳使用場景:

  • 文字處理和分析
  • 快速開發小型工具
  • Web 相關任務(如使用 API)

示範 script:

#!/usr/bin/env ruby

# @raycast.schemaVersion 1
# @raycast.title 生成隨機密碼
# @raycast.mode compact
# @raycast.argument1 { "type": "text", "placeholder": "密碼長度" }

length = ARGV[0].to_i
charset = Array('A'..'Z') + Array('a'..'z') + Array('0'..'9') + %w(! @ # $ % ^ & *)
password = Array.new(length) { charset.sample }.join

puts password

4. AppleScript:Mac自動化的不二之選

優勢:

  • 深度整合 macOS 系統
  • 可以直接控制 Mac 應用程序
  • 語法接近自然語言

最佳使用場景:

  • 自動化 Mac 特定的任務
  • 控制和操作 Mac 應用程序
  • 系統級的自動化操作

示範 script:

#!/usr/bin/osascript

# @raycast.schemaVersion 1
# @raycast.title 打開工作區
# @raycast.mode silent

tell application "Finder"
    open folder "Macintosh HD:Users:YourUsername:Documents:WorkSpace"
end tell

tell application "Visual Studio Code"
    activate
end tell

tell application "Chrome"
    activate
    open location "https://github.com"
end tell

5. Swift:Apple 生態系統的新寵

優勢:

  • 性能優越
  • 與 Apple 框架無縫集成
  • 型別系統嚴謹,安全性很讚

最佳使用場景:

  • 開發複雜的 Mac 工具
  • 需要高性能的腳本
  • 與 Apple 框架深度交互的任務

示範 script:

#!/usr/bin/swift

import Foundation

// @raycast.schemaVersion 1
// @raycast.title 倒計時
// @raycast.mode compact
// @raycast.argument1 { "type": "text", "placeholder": "事件名稱" }
// @raycast.argument2 { "type": "text", "placeholder": "日期 (YYYY-MM-DD)" }

let eventName = CommandLine.arguments[1]
let dateString = CommandLine.arguments[2]

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"

if let eventDate = dateFormatter.date(from: dateString) {
    let timeInterval = eventDate.timeIntervalSince(Date())
    let days = Int(timeInterval / (60 * 60 * 24))
    print("\(eventName)還有\(days)天")
} else {
    print("日期格式錯誤")
}

6. JavaScript (Node.js):全棧開發者的好幫手

優勢:

  • 龐大的 npm 生態系統
  • 異步編程能力強
  • 適合前後端開發

最佳使用場景:

  • Web API 交互
  • JSON 數據處理
  • 開發跨平台的工具

示範 script:

#!/usr/bin/env node

// @raycast.schemaVersion 1
// @raycast.title 獲取比特幣價格
// @raycast.mode compact

const https = require('https');

https.get('https://api.coindesk.com/v1/bpi/currentprice.json', (resp) => {
  let data = '';

  resp.on('data', (chunk) => {
    data += chunk;
  });

  resp.on('end', () => {
    const price = JSON.parse(data).bpi.USD.rate;
    console.log(`比特幣當前價格: $${price}`);
  });

}).on("error", (err) => {
  console.log("Error: " + err.message);
});

三、創建和使用 Raycast script

創建 Script 的步驟

  1. 打開 Raycast General
  2. 選擇 “Extensions” 標籤
  3. 點擊 “+” 按鈕,選擇 “Create Script Command”
  4. 選擇腳本語言
  5. 輸入腳本名稱和描述
  6. 編寫腳本內容
  7. 設置執行模式(如全螢幕、內嵌等)
  8. 保存並測試腳本

Script 參數的使用

Raycast允許你為腳本添加參數,使其更加靈活。以下是如何在腳本中使用參數:

#!/bin/bash

# @raycast.schemaVersion 1
# @raycast.title 歡迎訊息
# @raycast.mode compact
# @raycast.argument1 { "type": "text", "placeholder": "你的名字" }

echo "歡迎,$1!"

在這個例子中,腳本會提示用戶輸入名字,然後顯示一條歡迎訊息。


Raycast Script 的最佳實踐

  1. 註釋你的代碼:確保其他人(包括未來會回頭檢視的你)能夠理解腳本的功能。
  2. 錯誤處理:添加適當的錯誤檢查和處理邏輯。
  3. 模塊化:將複雜的腳本拆分為小的、可重用的函數。
  4. 版本控制:使用 Git 等工具管理你的腳本版本。
  5. 定期更新:隨著 Raycast 的更新,確保你的腳本與最新版本兼容。

四、實用腳本範例

1. 快速開啟你的工作環境

#!/usr/bin/osascript

# @raycast.schemaVersion 1
# @raycast.title 開啟工作環境
# @raycast.mode silent

tell application "Terminal"
    do script "cd ~/Projects/current-project && code . && npm start"
end tell

tell application "Google Chrome"
    activate
    open location "http://localhost:3000"
    open location "https://github.com/your-repo"
    open location "https://trello.com/your-board"
end tell

這個腳本會打開你的專案文件夾,啟動 VS Code,運行 npm start,然後在 Chrome 中打開本地開發服務器、GitHub 和 Trello。

2. 每日工作報告生成器

#!/usr/bin/env python3

# @raycast.schemaVersion 1
# @raycast.title 生成每日報告
# @raycast.mode fullOutput

import datetime

today = datetime.date.today()

report = f"""
日期:{today}

今日完成:
1. 
2. 
3. 

明日計劃:
1. 
2. 
3. 

問題與障礙:
- 

需要幫助:
- 
"""

print(report)

這個腳本會生成一個簡單的每日工作報告模板,你可以快速填寫並發送給你的團隊。

3. 快速查詢開發文件

#!/usr/bin/env node

// @raycast.schemaVersion 1
// @raycast.title 查詢開發文檔
// @raycast.mode silent
// @raycast.argument1 { "type": "text", "placeholder": "關鍵詞" }

const opn = require('opn');
const keyword = encodeURIComponent(process.argv[2]);

const docs = {
  'js': `https://developer.mozilla.org/en-US/search?q=${keyword}`,
  'python': `https://docs.python.org/3/search.html?q=${keyword}`,
  'react': `https://reactjs.org/docs/search.html?q=${keyword}`,
  'vue': `https://vuejs.org/v2/guide/#Search?q=${keyword}`
};

Object.values(docs).forEach(url => opn(url));

這個腳本允許你快速在多個開發文件當中搜尋關鍵字,節省查找的時間。

上述講的都是比較通用的,但其實用在工作上彈性也非常多。例如我自己本身就做了一個可以自動複製試算表儲存格的 crul 接著開啟終端機後執行,等 JSON 輸出後複製起來繼續下一段操作。這些動作你說難也不難,但就特別煩人,不過 Raycast script 設置好後只要一個熱鍵就可以走完全部的流程,這不是特別美好嗎?


五、進階技巧與優化

1. 使用環境變量

對於包含敏感信息(如 API 密鑰)的腳本,使用環境變量是個好主意:

#!/bin/bash

# @raycast.schemaVersion 1
# @raycast.title 使用API密鑰
# @raycast.mode compact

echo "使用的API密鑰: $MY_API_KEY"

你可以在腳本的數據中設置環境變量:

# @raycast.packageName Utilities
# @raycast.icon 🔑
# @raycast.mode compact
# @raycast.environment MY_API_KEY

2. 管理程式需要的套件

對於 Python 或 Node.js 的腳本,你可以用 requirements.txtpackage.json 來列出並管理程式需要的套件:

# @raycast.packageName My Python Script
# @raycast.icon 🐍
# @raycast.mode fullOutput
# @raycast.schemaVersion 1
# @raycast.title My Python Script
# @raycast.description A script that does something awesome
# @raycast.currentDirectoryPath ~
# @raycast.needsConfirmation false
# @raycast.argument1 { "type": "text", "placeholder": "Argument 1" }

# This will install the required packages when the script is first run
# @raycast.setupCoffee pip3 install -r requirements.txt

3. 讓腳本跑得更有效率

  • 對於常常要執行的腳本,可以考慮這些方法:
    • 使用暫存機制:把常用的資料先存起來,下次用時就不用重新處理。
    • 用異步操作來處理需要等待的工作:讓程式在等待某些動作時可以先做其他事。
    • 處理大量資料時,考慮用「邊讀邊處理」的方式:不要一次把所有資料都載入記憶體。

六、結語:釋放 Raycast Script 的潛力

Raycast 的腳本功能為 Mac 用戶提供了一個強大的工具,讓我們能夠將日常工作流程自動化,大大提高工作效率。相信看完這篇文章,大家都已經了解了如何利用不同的程式語言來創建各種實用的腳本。但這僅僅是開始,Raycast 腳本的潛力遠不止於此!


持續學習和改進要充分發揮 Raycast 腳本的潛力,持續學習和改進是關鍵:

  1. 追蹤 Raycast 的更新:Raycast 團隊常常推出新功能和改善,隨時關注這些更新可以讓你的腳本保持在最好的狀態。
  2. 參與社群:加入 Raycast 的使用者社群,和其他喜歡寫腳本的人交流想法和經驗。你可以在官方論壇或社群上找到這些資訊。
  3. 增進程式技能:當你越來越熟悉寫腳本時,可以考慮學習新的程式語言或技術,這樣你就能創造出更複雜和強大的腳本。
Script Commands Store 裡頭有一大堆幫你寫好的腳本!

最後的話

Raycast 腳本給了我們一個強大的工具,讓我們能夠按照自己的需求客製化和優化工作流程。不管你是經驗豐富的開發者,還是剛開始接觸程式設計的新手,Raycast 腳本都給你一個很棒的平台來提升工作效率。

每個人的工作流程都是獨一無二的。別怕嘗試新點子,創造屬於你自己的腳本。慢慢你會發現自己建立了一套功能強大、高度個人化的工具組,這些工具會讓你的日常工作變得更輕鬆、更有效率。

我一開始其實建立這些全部都只靠 GenAI 來處理,每次出錯就丟回 AI 解析,不斷的重複再重複… 直到腳本可以使用。有些過程老實說蠻痛苦的,主要也是因為我根本不懂程式… 但這也是最好的機會,利用 AI 加快我們平時的工作效率,我覺得這是每個工作者未來最重要的功課!