2015

Apr

24

Av

Det har väl inte undgått någon som använder Mac att det finns något som heter AppleScript för att koppla ihop olika program och på så sätt automatisera sitt arbete. Dock tror jag inte det är lika många Windows-användare som vet att det finns ett hyfsat avancerat script-språk även i Windows. Både AppleScript och Windows-script kan förstås startas från en FileMaker-databas och med det fantastiska fmp-protokollet går det även att få tillbaka resultat till FileMaker på Windows.

AppleScript har funnits för Mac sedan början av 1990-talet och var väldigt omtalat redan då. FileMaker var ett av de program som var med från början, med AppleScript kunde innehåll i en FileMaker-databas både hämtas och uppdateras från Finder eller andra program.
filetimeFlera andra programvaror utnyttjade möjligheten, t.ex. till tyska RagTime kom tilläggsprogrammet FileTime (”the ultimate database connection”) redan i mars 1993 (antagligen ingen som minns, men Mallverkstan var utvecklare av FileTime).

Det finns ett speciellt manussteg i FileMaker för att starta AppleScript, Utför AppleScript, och det är t.ex. relativt enkelt att låta Finder visa en dialogruta för att välja en mapp (som inte kan göras med FileMaker annars) och få tillbaka resultatet, dvs. sökvägen till den valda mappen, i ett textfält.

I manussteget Utför AppleScript skriver du följande script:

tell application "Finder"
   set valdMapp to choose folder with prompt "Välj en mapp:"
   set valdMappText to valdMapp as text
end tell
tell application "FileMaker Pro"
   activate
   set cell "Vald mapp" of current record to valdMappText
end tell

Koppla manuset till en knapp. Klickar du på knappen visas en dialogruta där du väljer en mapp, när du klickar på Välj i dialogrutan talar scriptet om för FileMaker att sätta in sökvägen för vald mapp i textfältet Vald mapp. På så sätt utnyttjar du en dialogruta som finns I Finder för att välja en mapp i FileMaker.

På Windows finns inget specifikt manussteg för att starta Windows-script. Istället kan man använda manussteget Öppna URL eller ännu bättre, manussteget Exportera fältinnehåll. Det förutsätter att scriptet finns i ett textfält, men det är ett bra sätt att distribuera det till samtliga användare.

Windows-script kan skrivas i något av programmeringsspråken VBScript eller Javascript. Jag har i exemplet valt VBScript för att göra motsvarande funktion på Windows, dvs. välja en mapp och få tillbaka resultatet till ett fält i FileMaker. Scriptet ser ut så här:

<job><script language="VBScript">
strPath = SelectFolder( "" )
If strPath = vbNull Then
   CreateObject("WScript.Shell").
      Run("fmp://$/Mapp?script=Resultat&param=Avbryt" )
Else
CreateObject("WScript.Shell").
      Run("fmp://$/Mapp?script=Resultat&param=" & strPath)
End If 
Function SelectFolder( myStartFolder )
    Dim objFolder, objItem, objShell
    On Error Resume Next
    SelectFolder = vbNull
    Set objShell  = CreateObject ("Shell.Application")
    Set objFolder = objShell.BrowseForFolder (0,"Välj mapp",0,myStartFolder)
    If IsObject (objfolder) Then SelectFolder = objFolder.Self.Path
    Set objFolder = Nothing
    Set objshell  = Nothing
    On Error Goto 0
End Function
</script></job>

Skapa ett textfält och klistra in Windows-scriptet. I manuset som startar Windows-scriptet behöver du göra 2 manussteg, först skapar du en variabel ($filnamn) med sökväg och namn på script-filen som FileMaker ska exportera. Lämpligen sparar du den i temp-mappen. Använd funktionen Get (TemporärSökväg) för att få reda på sökvägen till temp-mappen. Filtypen för Windows-script är ”.wsf”, så du bör döpa filen därefter.

Med nästa manussteg, Exportera fältinnehåll, exporterar du scriptet och väljer samtidigt att öppna det (sätt kryss i rutan), dvs. starta Windows-scriptet.

ManusMappWin
 
Koppla manuset till en knapp. När du klickar på knappen startas Windows-scriptet och en dialogruta visas där du väljer en mapp. När du klickar på Välj i dialogrutan gör Windows-scriptet ett fmp-anrop till FileMaker och aktuell databas för att spara den mapp du valt i databasen.

fmp-anropet, som är markerat med fet stil i scriptet ovan, startar manuset Resultat med den valda sökvägen för mappen som parameter. Manuset Resultat sätter i sin tur in sökvägen till mappen i fältet Vald mapp i databasen. I adressen för fmp-protokollet betyder ”$” att databasen finns på aktuell dator och Mapp är databasens namn, samma databas som du startar scriptet från. (OBS! Du behöver FileMaker Pro 13.0v2 eller senare för att använda fmp-protokollet.)

Manuset Resultat finns i databasen Mapp och innehåller två manussteg, ett för att tilldela fältet Vald mapp och ett manussteg för att verkställa/spara innehållet. Det ser ut så här:

MappResultat
 
Det går alltså att göra samma funktion som använder operativsystemet för att välja en mapp i både OS X och Windows.

Med AppleScript och Windows-script kan man göra väldigt många användbara och bra integrationer mellan FileMaker, operativsystemet och/eller andra program, t.ex. välja förvald skrivare, kopiera filer, skapa mappar, importera tusentals dokument på en gång m.m. Som vanligt är det fantasin som sätter begränsningen!

Ladda ner exempeldatabas: Mapp.fmp12

ManusMappFonster

Skriv en kommentar

  • (will not be published)

Läs också: