Czy AppleScript może pisać do dokumentu Notes.app?

2

Chciałbym napisać tekst do „Notatki” (w przeciwieństwie do standardowego pliku .txt lub .rtf), ponieważ Mac Notes automatycznie synchronizuje się z kontem iCloud na różnych urządzeniach.

(Rozumiem, że można użyć różnych środków, aby osiągnąć ten sam efekt za pomocą standardowych, tj. Niezastrzeżonych dokumentów tekstowych, np. Za pomocą usługi takiej jak Dropbox. Notes.app jest po prostu znacznie wygodniejszy.)

Wygląda jednak na to, że nie ma sposobu, aby pisać do notatki w AppleScript. Mówię to, ponieważ nie wydaje się, aby Notatki były zapisywane w dowolnym miejscu na komputerze Mac jako plik .rtf (lub podobny). Na to pytanie (ale pamiętaj, że pytanie zostało zadane w 2013 r.), Sprawdziłem następujące katalogi:

  • ~/Library/Group Containers/group.com.apple.notes/

    • i
  • ~/Library/Containers/com.apple.Notes/Data/Library/Notes/

Nie znalazłem niczego, co przypominałoby czytelny dokument tekstowy. Otworzyłem niektóre z tych plików w TextEdit.app i odkryłem, że pliki te zawierają czysty tekst gobbledygook.

Wyobrażam sobie, że mógłbym skutecznie zakodować kod AppleScript w celu „zapisu do dokumentu programu Notes” poprzez uruchamianie kliknięć myszą i naciśnięć klawiszy. Jestem jednak ciekawy, czy można napisać do notatki w „właściwy” sposób.

kula Rubika
źródło
Według Biblioteki w edytorze skryptów wydaje się, że Notes jest całkowicie skryptowalny. Jedna z właściwości: treść (tekst): treść HTML notatki. Wydaje się więc, że można go obsługiwać za pomocą znaczników HTML. Macosautomation ma starszy artykuł, ale aplikacja Notatki jest nadal zawarta w bibliotece skryptów od macOS 10.12
bjbk
1
Notes przechowuje swoje dane w bazie danych SQLite w formacie 3 i dlaczego wyglądał jak gobbledygook-text w TextEdit.app po otwarciu plików w tych lokalizacjach. Jeśli naprawdę chcesz przejrzeć zawartość, zrób kopię folderu i otwórz .storedataplik (kopia, nie oryginał) za pomocą Liya .
user3439894,

Odpowiedzi:

6

Notatki można zapisywać w skryptach, a szczegółowe informacje można otworzyć w edytorze skryptów.

Jest też długi samouczek tutaj .

Chociaż nie przetestowałem go w iCloud, powinieneś być w stanie założyć konto i utworzyć notatkę na tym koncie.

Upraszczając przykład na tej stronie i korzystając z mojego konta Exchange, udało mi się utworzyć notatkę za pomocą tego skryptu:

tell application "Notes"
  tell account "Exchange"
    make new note at folder "Notes" with properties {name:"this is a test", body:"and more text"}
  end tell
end tell

Aby uzyskać zawartość istniejącej notatki, aby ją zmodyfikować:

tell application "Notes"
  tell account "Exchange"
    tell folder "Notes"
      get body of note "this is a test"
    end tell
  end tell
end tell

Aby zmodyfikować zawartość:

tell application "Notes"
  tell account "Exchange"
    tell folder "Notes"
      set body of note "this is a test" to "reset the body text"
    end tell
  end tell
end tell
Kent
źródło
1
Przetestowałem to na moim koncie iCloud i działa dobrze. Niezły, @Kent
bjbk
Czy wiesz, czy można edytować już istniejącą notatkę? Czy musisz za każdym razem tworzyć nową notatkę?
kula
Tak. Zmodyfikowałem odpowiedź. Prawdopodobnie będziesz chciał ustawić zmienną z oryginalnym tekstem i dokonać modyfikacji przed ustawieniem treści do nowej wartości; ale to nie jest trudne.
Kent
Mogę z powodzeniem get body of note, ale za każdym razem, gdy próbuję set body of note, nic się nie dzieje (nawet jeśli tekst zastępczy jest prawidłowym HTML). Czy Ci to pasuje?
kula
1
Jestem zakłopotany. Jestem na Sierra 10.12.6; ale to nie powinno mieć znaczenia. Jedyna różnica polega na tym, że masz włączoną usługę iCloud, a ja nie. Nie rozumiem jednak, dlaczego zmiana opcji „Na moim Macu” spowodowałaby, że Notes wymknąłby się spod kontroli.
Kent,