Eu quero criar um script que cria eventos alarmados no iCal para aniversários de pessoas que eu tenho no meu livro de endereços. Infelizmente, estou muito mal trabalhando com o AppleScript.
Abaixo está o esboço do que eu faço, eu adoraria alguma ajuda sobre o que o roteiro real deveria ser.
- executar script quando uma alteração é feita para uma data de nascimento no catálogo de endereços ou quando o catálogo de endereços é encerrado
- definir lista de pessoas (terá um alarme extra, veja abaixo)
- pesquisar aniversários inseridos no catálogo de endereços
- se nenhum evento estiver presente no calendário ical chamado "aniversários" para aniversários encontrados no livro de endereços (verifique nome e data)
- criar novo evento de dia inteiro no calendário de aniversários com alarme na data e título "(Nome da pessoa) 's aniversário)
- se aniversário está na lista definida anteriormente
- adicione alarme extra duas semanas antes do aniversário
- exibir mensagem mostrando quais novos eventos foram criados quando o script foi executado
Eu não acho que o script seria tão complexo ou longo. qualquer ajuda seria muito bem vinda.
Não sei como esse script pode ser acionado, mas o ideal é que ele seja executado se uma alteração for feita em um aniversário no catálogo de endereços (ou se um novo for adicionado).
applescript
ical
contacts
Sam
fonte
fonte
Respostas:
Para definir alertas únicos em todos os aniversários, você pode evitar um script completamente:
Eu não tenho tempo para realmente escrever um AppleScript para as partes de alarme duplo, mas isso artigo parece cobrir muito bem os alarmes de calendário de script. Eu imagino que você precisaria apenas criar um arquivo ou lista no script que contém os nomes dos eventos (que você pode deduzir da convenção de nomenclatura padrão que o aplicativo Calendar usa).
Também estou usando o aplicativo Mountain Lion with Calendar. Não me lembro se os passos acima funcionam em versões mais antigas do iCal.
fonte
Eu acredito que a diferença é que o calendário do aniversário não cria alarmes antes do evento. Também não permite adicioná-los manualmente.
Eu acho que você poderia fazer este trabalho com um script de ações de pasta. Ative o calendário de aniversários em ical. Em seguida, anexe um script à pasta em que esses eventos estão armazenados. Quando um novo evento é adicionado (ou seja, você adicionou um novo aniversário ao seu catálogo de endereços), o script será acionado.
Aqui está a pasta onde encontrei meus eventos de aniversários:
/Library/Calendars/FA907C55-E8CD-4291-8173-B3F86886E2BF.calendar/Events
Você pode ter que vasculhar as listas de calendários até encontrar a pasta correta, mas ela deve estar lá.
A partir daí, o script levaria o novo item adicionado à pasta e depois copiaria para um calendário separado e adicionaria o alarme. Para configurá-lo, criaria um novo calendário onde você deseja que esses novos eventos sejam descartados. Tire os eventos do calendário de aniversários e arraste-os para a área de trabalho ou em algum lugar (eles serão excluídos mais tarde). Em seguida, abra cada um deles. Ele perguntará para qual calendário você deseja adicioná-los. Escolha apenas a nova agenda que você criou. Exclua os arquivos, lá você vai, agora você pode adicionar alarmes a eles.
Dependendo de quantos aniversários você já tem, você pode escrever um script que adicione um evento a cada um deles individualmente ou (se você for como eu e tiver tão poucos dias salvos) faça isso manualmente. Uma vez feito isso, um script de ação de pastas faria o truque que você está procurando.
Desculpe, não tenho o código exato para você adicionar o alarme. Tente isso e deixe-me saber como funciona!
fonte
Livro de endereços já coordena com iCal para criar eventos com base na data no campo de aniversário de qualquer contato. Se tudo o que você precisa apenas de alarmes, você só precisa de uma maneira de adicionar alarmes a esses eventos.
O problema é que a interface do usuário do iCal apresenta o calendário como se fosse somente leitura. Mas para o AppleScript, o calendário não é realmente somente leitura. Você pode usar o AppleScript para adicionar alarmes aos eventos no calendário "Aniversários":
Toda vez que você executar este programa, ele irá, efetivamente, garantir que todos os aniversários tenham um alarme. † Parece que Livro de endereços faz apenas alterações mínimas quando atualiza um evento de aniversário para um nome alterado ou data de aniversário; os alarmes persistem em atualizações de Livro de endereços , mas isso pode não ser confiável Livros de endereços "Possui" esses eventos e pode excluí-los e recriá-los completamente sempre que sentir a necessidade de fazê-lo.
Eu não sei de uma maneira oficial de ser notificado de Livro de endereços alterações, mas como o outro respondente sugere, você pode ser capaz de ligar uma ação de pasta para a pasta que contém os eventos para o calendário de "aniversários". Você pode abrir essa pasta com este programa:
Como esse é um detalhe interno, ele pode não ser confiável em diferentes versões do sistema operacional. Todos os itens acima foram desenvolvidos e testados no Mac OS X 10.6.8.
Como alternativa, como o programa acima garante que todos os aniversários tenham um alarme, você pode organizá-lo uma vez por dia ou uma vez no login (você pode usar um evento do iCal com um alarme "Executar script" ou salvar o programa como um aplicativo e configurá-lo como um item de login).
Criar seus próprios eventos (no seu próprio calendário) é certamente possível, mas mantê-los sincronizados com os dados de aniversário pode ser complicado (a pesquisa por “nome e data” geralmente não é suficiente porque o usuário pode alterar qualquer um deles e seu “make” programa de alarmes "pode não ser capaz de determinar os valores originais no momento em que ele sabe que um contato em particular foi atualizado com um novo nome ou data de aniversário). Livro de endereços resolve esse problema codificando o identificador exclusivo interno do contato para o URL que ele salva em cada evento de aniversário
url
propriedade; Como o calendário é "somente leitura", ele não precisa se preocupar com a alteração ou a exclusão de URLs especiais de um usuário, de modo que ele pode confiar na precisão deles.† Excluímos todos os alarmes existentes no pressuposto de que todos os alarmes são "nossos" Livro de endereços não adiciona alarmes sozinho e iCal não permite que os usuários adicionem alarmes. Infelizmente, não há nenhuma propriedade extra em que possamos adicionar qualquer tipo de identificador exclusivo ao alarme em si (embora, se a hora exata do alarme não for importante, talvez seja possível codificar algumas informações no valor numérico da compensação do minuto do alarme ). Parece mais fácil excluir os alarmes e criar exatamente o que queremos, em vez de verificar os alarmes existentes para ver se eles correspondem à nossa configuração de alarme atual desejada.
fonte