Değişken ve borudan kabuğa elma arasındaki fark


1

Bu soruyu cevaplarken bu senaryoyu yazdım:

global presenterNotes 
tell application "Keynote"
    activate
    open (choose file)
    tell front document
        set presenterNotes to presenter notes of every slide as text
            set the clipboard to presenterNotes
        do shell script "pbpaste > ~/keynote-notes.txt"
    end tell    
    quit application "Keynote" end tell

Sorum şu: Yukarıdaki örnekte "shell script" ifadesini değiştirdiğimde, aşağıdaki ifadeyle neden bu ifade işe yarıyor:

tell application "TextEdit"
        activate
        make new document
        set text of front document to presenterNotes
        quit application "TextEdit"
    end tell

Örnek 1: ama bu değil:

tell application "TextEdit"
        activate
        make new document with data presenterNotes as text

Örnek 2: ne de:

make new document with presenterNotes

Panoya kopyala gibi çalışmasını sağlamanın ve daha sonra bir komut + c verdiğini biliyorum.

Genel değişkenin neden textEdit belgesine aktarılmadığını, özellikle yukarıdaki Örnek 1'de, applescript bir hata atmadığından, anlamak istiyorum.

Yanıtlar:


1

"Çalışıyor" betiğinizi çalıştırdığınızda oluşturulan gizli bir hata var ... shell scriptKodun bir kısmını tell current applicationaşağıdaki ikinci örnekte gösterildiği gibi kendi bloğuna çarpmanız gerekiyor ...

Bu sürüm benim için bir TextEdit belgesi oluştururken işe yarıyor:

global presenterNotes
tell application "Keynote"
    activate
    -- open (choose file)
    tell front document
        set presenterNotes to presenter notes of every slide as text
        set the clipboard to presenterNotes
    end tell
    tell application "TextEdit"
        activate
        make new document with properties {name:"KeynoteNotes.txt"}
        set text of front document to presenterNotes
    end tell
end tell

pbpaste-10004 hatasını önlemek için uygun engelleme özellikli kabuk sürümü:

global presenterNotes
tell application "Keynote"
    activate
    -- open (choose file)
    tell front document
        set presenterNotes to presenter notes of every slide as text
        set the clipboard to presenterNotes
    end tell
    tell current application
        do shell script "pbpaste > ~/keynote-notes1.txt"
    end tell
end tell

Yanıtladığınız için teşekkürler, ancak Örnek 1 ve 2'nin neden global değişkenle çalışmadığını hala bilmiyorum, cevap verebilirseniz cevabınızı kesinlikle doğru olarak işaretleyeceğim.
Deesbek

Örnekler için tam komut dosyasını gönderebilir misiniz? Benimki tellve end tellyerleştirilmeleri sadece mayınlardan biraz farklı .
beroe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.