Lỗi osascript: Lựa chọn ban đầu của AppleScript trong danh sách Hộp thoại không được chọn


1

Tôi chạy mã sau trong Terminal:

osascript "/Users/Me/Desktop/Run this script on wake.scpt"

Nếu hộp thoại đầu tiên của tệp .scpt của tôi là choose from listhộp thoại, thì hộp thoại này sẽ không được chọn. Đó là, tôi không thể đơn giản nhấn enterphím để bấm "OK"; Trước tiên tôi phải nhấp vào bất cứ nơi nào trên hộp thoại để làm cho thanh trên cùng của hộp thoại thay đổi từ màu trắng sang màu xám và chỉ sau đó tôi mới có thể nhấn enterđể tiếp tục.

Để rõ ràng, hộp thoại đến phía trước chỉ tốt - nó chỉ đơn giản là không được chọn.

Tuy nhiên, nếu hộp thoại đầu tiên là một display dialoghoặc display alerthộp thoại, thì hộp thoại sẽ tự động được chọn. Nó chỉ xảy ra rằng hộp thoại ban đầu của tệp .scpt của tôi là một choose from listhộp thoại.

Tôi đã thử viết activate metrên dòng phía trên choose from listhộp thoại, nhưng điều này không làm gì cả.

Khi tôi chạy "Chạy tập lệnh này trên Wake.scpt" từ bên trong Trình chỉnh sửa tập lệnh, choose from listthực tế hộp thoại đã được chọn. Do đó, chúng tôi biết rằng vấn đề có liên quan đến osascript.

Có ai có cách giải quyết để buộc choose from listhộp thoại được tự động chọn không?

Tôi đã thử thực hiện lựa chọn mặc định bằng cách chèn default itemstham số trong choose from listlệnh (mặc dù tôi không thực sự muốn có một mục mặc định tồn tại trong trường hợp này). Tôi nghĩ rằng làm điều này có thể buộc hộp thoại được chọn. Tuy nhiên, hộp thoại danh sách không được chọn.

Như một phương sách cuối cùng, tôi cho rằng tôi có thể sử dụng AppleScript để nhấp chuột vào giữa màn hình (nơi đặt hộp thoại). Nhưng, tôi thích một giải pháp thanh lịch hơn, vì AppleScript có thể không đáng tin cậy khi nhấp chuột.


Nếu bạn đang tự hỏi tại sao tôi lại tuyển dụng osascriptở nơi đầu tiên, thì đó là vì tôi đang sử dụng SleepWatcher để tự động chạy AppleScript khi máy tính của tôi thức dậy. ( Đây là một hướng dẫn rất hữu ích mà tôi đã sử dụng để thiết lập SleepWatcher.)

Đây là toàn văn của tệp .wakeup của tôi:

#!/bin/bash
osascript "/Users/Me/Desktop/Run this script on wake.scpt"

Như tôi đã viết trong câu trả lời của mình dưới đây (không được chú ý bởi OP), vấn đề của bạn không phải là AppleScript mà thực tế là osascript không phải là một lệnh đơn thuần mà là một quá trình của riêng nó. Do đó, bạn (anh ấy) activate application "Terminal" KHÔNG được "tôi" (= osascript) về
clemsam lang

Câu trả lời:


1

Điều này thật kỳ lạ .. Hiện tại, tôi khuyên bạn nên lưu tập lệnh của mình dưới dạng thực thi. Điều này có thể được thực hiện bằng cách mở Applescript của bạn trong Trình chỉnh sửa tập lệnh, sau đó nhấp vào menu Tệp, sau đó Xuất, sau đó chọn "Ứng dụng" trong hộp thả xuống Định dạng tệp. Sau đó, bạn có thể tạo một Applescript thực thi ứng dụng này.


Thật không may, giải pháp này không giải quyết được vấn đề. Tôi đã lưu AppleScript của mình dưới dạng tệp .app thông qua Automator. Sau đó tôi đã thử khởi chạy .app qua Terminal bằng hai phương pháp khác nhau được giải thích ở đây . Tôi cũng đã thử chỉ cần nhấp đúp vào ứng dụng và khởi chạy nó từ Finder theo cách tiêu chuẩn. Tôi cũng đã thử khởi chạy ứng dụng với AppleScript trong một tệp .scpt riêng, như bạn đề xuất. Trong tất cả các trường hợp này, choose from listhộp thoại ban đầu không được chọn. Nhưng, bây giờ chúng tôi biết rằng lỗi này rộng hơn osascript.
quả cầu rubik

Xin vui lòng bỏ qua bình luận trước đây của tôi. Tôi đã thấy rằng, miễn là tôi đưa activate mevào dòng trên choose from list, thì khi chạy phiên bản .app của tệp AppleScript, hộp thoại danh sách ban đầu nhất thiết phải được chọn, bất kể tệp .app được chạy như thế nào. Cảm ơn!
quả cầu rubik

Không vấn đề gì! Vui mừng khi sử dụng .app đã làm việc!
Jake3231

0

Như tôi đã tìm ra trong bối cảnh của một câu hỏi khác, vấn đề của bạn là "tôi" trong kịch bản của bạn và do đó không chỉ "liên quan" đến osascript:

osascript là vấn đề của bạn

Cấm như osascript KHÔNG phải là một lệnh đơn thuần trong Terminal mà thực sự là một quá trình của riêng nó .
Nếu bạn muốn mở tệp từ Terminal, bạn phải "kích hoạt Terminal" và KHÔNG "kích hoạt tôi" [= osascript].

(Vì bạn đã chấp nhận một câu trả lời là câu trả lời "được chọn" của mình, tôi sẽ giới hạn câu trả lời của mình cho gợi ý này.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.