Automatisera OS X med Javascript
Kommer du ofta på dig själv med att göra saker du helst skulle automatisera? Har du tittat på Applescript men inte orkat lära dig språket? Använd Javascript istället.
Övervaka din skärmbild
Nu när vi kommit igång med Javascript och Skriptredigeraren så kan vi bygga något vettigt. Häromåret var det väldigt populärt att ta ett självporträtt varje dag och sedan sätta samman till en enda bildserie. Vad sägs om att istället ta en skärmdump på ditt skrivbord en gång om dagen, och sedan mejla denna bild till dig själv.
Det som behöver göras kan sammanfattas i tre punkter:
Anropa kommandoradsprogrammet screencapture som sparar en skärmdump till specificerad sökväg.
Skapa ett mejl med bilden bifogad och skicka detta till valfri e-postadress.
Schemalägg uppgiften så att den körs automatiskt.
Vi vill alltså att ett mejl likt detta ska dimpa ner i inkorgen:
Skapa ett nytt skript i Skriptredigeraren där vi först placerar inställningsvariabler för den e-postadress som ska få mejlet och var skärmdumpen ska sparas:
var sendToEmail = "[email protected]" var savePicPath = "/Users/andreas/screenshot.jpg"
Därefter skapar vi som tidigare ett objekt för applikationen:
var app = Application.currentApplication() app.includeStandardAdditions = true
Detta objekt kan vi nu använda för att anropa ett kommandoradsprogram, i detta fall screencapture:
app.doShellScript('screencapture ' + savePicPath)
Nu har bilden fångats och sparats. Nästa steg är att skapa ett nytt e-postmeddelande adresserat till den e-postadress vi sparade i variabeln sendToMail:
Mail = Application('com.apple.Mail') message = Mail.OutgoingMessage().make() message.toRecipients.push(Mail.Recipient({ address: sendToEmail }))
Vi kan använda Javascripts Date-objekt för att fånga den aktuella tiden och använda denna i meddelandets ämnesrad och innehåll:
message.subject = "Skärmdump " + Date() message.content = "Denna skärmdump togs cirka " + Date()
Därefter ska bilden bifogas. Hittills har vi kunnat hålla alltsammans i bakgrunden, men för att bilden ska kunna bifogas måste vi göra meddelandet synligt under ett ögonblick:
message.visible = true attachment = Mail.Attachment({ fileName: savePicPath }) message.attachments.push(attachment) message.visible = false
Slutligen kan mejlet skickas:
message.send()
Provkör skriptet direkt i Skriptredigeraren. Om det fungerar är nästa steg att schemalägga skriptet i verktyget Automator. Öppna detta och du möts av en dialogruta där du kan välja olika typer av mallar (tryck Cmd + N om du inte ser dialogen). Välj här Kalender-alarm.
Automator låter dig bygga flöden bestående av olika komponenter. Du ser komponenterna listade till vänster och flödet visualiserat till höger. I den vänstra listan, markera Verktyg och leta sedan upp "Kör Javascript" i underlistan till höger. Dra sedan ut denna komponent i flödet till höger.
När komponenten dyker upp i flödet som en ruta har den en del förifylld Javascriptkod. Rensa bort detta och kopiera över hela din kod vi just skrev från Skriptredigeraren. Tryck därefter Cmd + S och välj ett namn på kalenderhändelsen.
När du sparat kalenderhändelsen sätts den till att köra den aktuella tiden och en gång. Öppna därför Kalender och konfigurera den att köras upprepande gånger på vald tidpunkt.
Du har nu skapat ditt egna lilla spionprogram eller loggboksförare, beroende på hur man ser på det. Att arbeta i Javascript känns nog för de flesta betydligt mer hemvant än Applescript. Men tyvärr har Apple fortfarande mycket bristfällig dokumentation på hur Javascript används i OS X.
Avslutningsvis, låt oss återgå till den allra första meningen i den här texten. Om du fortfarande sitter med en hög filer som du hade hoppats kunna döpa om genom Javascript, ta en titt på denna Github Gist.
Då Apples egna dokumentation för Javascript är i stort sett obefintlig får du istället förlita dig på tredjepartskällor. En sådan är Github-repot JXA Cookbook som ger många exempel på hur du använder Javascript i kombination med OS X skriptmöjligheter.