Como posso adicionar lembretes pela linha de comando?

18

De vez em quando, pode ser útil adicionar alguns lembretes ao Reminders.app na linha de comando - especialmente porque eles são sincronizados com o iCloud. Existe alguma maneira de fazer isso?

Uma solução que não depende do AppleScript é a preferida : a) por razões de desempenho (provavelmente tolas) eb) as soluções AppleScript geralmente parecem desajeitadas ou exageradas para mim.

myhd
fonte
2
Por que você prefere não usar o AppleScript?
Daniel

Respostas:

9
osascript - title <<END
on run a
tell app "Reminders"
tell list "Reminders" of default account
make new reminder with properties {name:item 1 of a}
end
end
end
END

Você também pode criar um fluxo de trabalho do Automator com apenas uma ação vazia de Novo item de lembretes e executá-lo com automator -i title test.workflow.

Veja também este post em Mac OS X Hints .

Lri
fonte
Obrigado pela sua resposta. Infelizmente, isso não é executado no shell script ou no Editor de scripts. o que estou perdendo?
Myhd 11/10/12
11
Adicione #!/usr/bin/env bashcomo primeira linha e execute chmod +x /path/to/scriptou execute bash /path/to/script.sh. Ou remova a primeira e a última linha e salve-o AppleScript Editor.
Lri
11
A dica do Automator fez o truque! Ao contrário da solução AppleScript, não é necessário iniciar o Reminders.app, que é exatamente o que eu queria.
myhd
14

Aqui está outra versão que permite definir o título, a data e a hora de término através dos argumentos da linha de comando.

#!/usr/bin/env bash                                                                                                               
# Make a new reminder via terminal script                                                                                         
# args: remind <title> <date> <time>                                                                                                                                                                                 

osascript - "$1" "$2" "$3" <<END                                                                                                        
on run argv                                                                                                                       
    set stringedAll to date (item 2 of argv & " " & item 3 of argv)                                                               
    tell application "Reminders"                                                                                                  
        make new reminder with properties {name:item 1 of argv, due date:stringedAll}                                             
    end tell                                                                                                                      
end run                                                                                                                           
END    

Portanto, se você nomear esse script como "lembrar" e conceder privilégios de execução (chmod 755), você pode fazer o seguinte:

$ ./remind "Go to grocery store" 12/15/2013 10:00:00PM                              
renfredxh
fonte
Isso funciona para mim, mas como posso adicionar um alarme. É assim que eu posso aparecer pop-up e me lembrar da data e hora do lembrete? Como é, tenho um lembrete, mas não recebo uma notificação.
GrouchyGaijin
2
tell application "Reminders"
    activate
    show list "Reminders"
end tell
set stringedDate to "12/11/2015"
set stringedHour to "10:00:00PM"
set stringedAll to date (stringedDate & " " & stringedHour)
tell application "Reminders" to tell list "Reminders" of default account to make new reminder with properties {name:"this is just test remainder", remind me date:stringedAll, due date:stringedAll, priority:1}
Kalpesh Gamit
fonte
11
Oi obrigado Isso funciona apenas em sistemas em que inglês é o idioma da interface do usuário. Em outros idiomas, um dos nomes da lista são localizados, por exemplo, "lembretes" se torna "Erinnerungen" em alemão
myhd
Na verdade, este exemplo ilustra o uso da "data de lembrete" em oposição à "data de vencimento" acima. E o "lembrar-me data" é exatamente o que se deseja usar para obter o alarme / alerta.
Grrrr
2

Aqui está a mesma funcionalidade do AppleScript acima; mas no JXA com ES6.

#!/usr/bin/env osascript -l JavaScript

const RemindersApp = Application('Reminders');

function run(argv) {
    [name, date, time] = argv;
    dueDate = new Date(date + " " + time);
    reminder = RemindersApp.Reminder({name: name, dueDate: dueDate});
    RemindersApp.defaultList.reminders.push(reminder);
}
Tony Lotts
fonte