2013-07-19 45 views
0

我是嘗試使用來學習AppleScript。你在我的第一個雄心勃勃的項目的一部分下看到了什麼。如果您還打開了「文本編輯」窗口,則會對其進行修改,以便在AppleScript編輯器中進行測試。使用變量時無法對齊窗口→無法將{「string 」}轉換爲整型

腳本的作用:

  • 從列表中選擇編輯
  • 對準兩個打開的窗口

我的問題:

對齊窗戶只能如果我解僱變量。只要我將變量返回的列表selectedEditor)與字符串tell process "TextEdit"一起使用。

我希望有人可以發現錯誤。從事件

錯誤代碼日誌:

System Events got an error: Can’t make {"TextEdit"} into type integer. 

下面的代碼:

property myEditors : {"TextEdit", "Sublime Text 2"} 
set the editorList to myEditors as list 

set selectedEditor to choose from list the editorList 

set lngWidth to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Width") 
set lngHeight to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Height") 
set lngHalf to lngWidth/2 
set lngHeight to lngHeight - 22 

tell application id "sevs" 
    tell process selectedEditor to tell window 1 to set {position, size} to {{lngHalf, 22}, {lngHalf, lngHeight}} 
    tell process "AppleScript Editor" to tell window 1 to set {position, size} to {{0, 22}, {lngHalf, lngHeight}} 
end tell 

回答

0

錯誤「System Events出錯:無法將{」TextEdit「}設置爲整型。」告訴你這個問題。 {「TextEdit」}是包含一個項目的列表。這就是你從「從列表中選擇」聲明中得到的結果。因此,更改該聲明到這...

set selectedEditor to item 1 of (choose from list the editorList) 

這會給你「文字編輯」,這是一個字符串,而不是{「文字編輯」}這是一個列表。

此外,這種說法是不必要的,因爲myEditors已經是一個列表,由括號括起。只需在「從列表中選擇」命令中直接使用myEditor即可。

set the editorList to myEditors as list 
+0

這是問題的解決方案。謝謝@ regulus6633。 ///我的完整腳本仍然無法工作,但我設法找到了'其他錯誤',現在一切正常。 – pattulus

0

我看到這個錯誤唯一的線索是,它是:

「errAEIllegalIndex:投放操作中指數超出範圍」

我沒有/自己標記,所以我不知道它與AppleScript的限制/潛力。由於您是AppleScript的新手,因此我會問您是否確定Marked.app不是可編寫腳本的,也就是說,如果您確定它沒有適當的腳本字典(完全沒有)。將應用程序文件拖放到AppleScript Script編輯器會告訴你這個(要麼顯示你的應用程序的字典,要麼告訴你它無法讀取它)。使用系統事件的唯一原因是應用程序不可編寫腳本,或者以非常有限的方式編寫腳本。大多數具有有限腳本編寫能力的應用程序都具有帶屬性的窗口對象。

例如,火狐(我現在使用它)具有有限的腳本化,並允許我設置了窗口的邊界:

tell application "Firefox" 
    set bounds of window 1 to {137, 22, 1345, 809} 

properties of window 1 
end tell 

...並同時獲得它的windows'屬性(tell中的第二行)。

對不起,如果這對你是顯而易見的,並且你已經確定Marked沒有這個功能,但是它是第一件要檢查的東西,就像我說的,我沒有標記。

+0

標記在一定程度上可編寫腳本。因爲我不確定(a)列表中的每個應用程序是否支持您的解決方案,所以我使用上面的解決方案來更靈活。我也更新了這個問題,並使其更簡單。簡而言之:該變量不起作用,但如果直接輸入應用程序名稱,則可以使用。 – pattulus

+0

涉及使用標記應用程序的原始問題和指定的錯誤-1719。隨着時間的推移,我回應,但重新編輯指出了一個不同的問題。 – CRGreen

相關問題