AppleScript aus Email starten ?

M

mat-hh

Neues Mitglied
Thread Starter
Dabei seit
12.06.2004
Beiträge
8
Reaktionspunkte
0
Hallo,

ich bin nun überhaupt kein Kenner von AppleScript, aber ein kleiner Filemaker-Freak. Ich möchte gerne aus einer Mail ein AppleScript starten, welches wiederum ein FilemakerScript startet.

Aber mal langsam:
Einer unserer Filemakerrechner verschickt Mails mit Terminen die erledigt werden sollen bzw. Erinnerungen betreffend Kunden die angerufen werden sollen.
Ich würde in diese Mail gerne einen href-Link einbauen, die ein AppleScript aufruft, welches wiederum ein Filemakerscript einer bestimmten Datenbank triggert und die Kundennummer übergibt.
Mit dieser Funktionalität soll halt aus dem EMailprogramm heraus mit einem Mausklick der Datansatz in Filemaker aufgerufen werden, ohne sich erst die Kundennummer zu merken, das Programm zu wechseln und eine neue Suchabfrage zu starten.
Kann mir einer helfen ? Wär toll !

Matthias van den Nieuwendijk
(mushroom media)

mat@mushroom-media.com
 
Ist das eine versteckte "wie programmiere ich einen Virus mit AppleScript"-Frage???? Ich glaube sowas wird hier nicht beantwortet, sollte es so sein, wie es klingt.... :D :D :D :D
 
Ich möchte lediglich Filemaker-Datensätze aus EMails heraus aufrufen - und zwar genauso wie ich oben beschrieben habe. Die Anschuldigung von ricci007 finde ich ganz schön heftig.

Ich zitiere mich gerne nochmal selber...
> Mit dieser Funktionalität soll halt aus dem EMailprogramm heraus
> mit einem Mausklick der Datansatz in Filemaker aufgerufen werden,
> ohne sich erst die Kundennummer zu merken, das Programm zu
> wechseln und eine neue Suchabfrage zu starten.

Nicht mehr und nicht weniger. Hat einer jetzt also doch eine Idee, wie ich aus einer Mail ein AppleScript starte, welches wiederum ein FilemakerScript startet?

Mat
 
mat-hh schrieb:
Hat einer jetzt also doch eine Idee, wie ich aus einer Mail ein AppleScript starte, welches wiederum ein FilemakerScript startet?

Mat

Ich arbeite auch seit längerem mit der Kombination Filemaker Pro (derzeit noch Version 5.5) und Entourage (die Version aus Office X, nicht Office 2004).

Richtung Filemaker->Entourage:
------------------------------
Ich erzeuge aus FilemakerPro über ein AppleScript-Feld Mails mit bestimmten Properties, Anhängen usw.

Richtung Entourage->Filemaker:
------------------------------
Umgekehrt kann man über das AppleScript-Menü in Entourage beliebige AppleScripts anstoßen, die natürlich auch Filemaker steuern können, Filemaker Scripts anstoßen etc.
Ich arbeite dabei nicht über einen Link innerhalb der eMail, sondern eben über das Scriptmenü von Entourage. Also: Wenn per eMail eine Bestellung herein kommt, wähle ich ein Script aus dem Entourage-Scriptmenü, dass den Inhalt der gerade ausgewählten eMail ausliest und die gewonnenen Daten an Filemaker Pro zur Weiterverarbeitung (sprich: Suchen von Adress- und email-Daten, Anlegen von Rechnungen, Anlegen von Rechnungspositionen etc.) durchreicht.

Funktioniert sehr gut, die Frage ist, ob es das ist, was Du brauchst.
 
...

Hallo mat-hh,

Skript direkt aus der Mail ausführen geht nicht. Man kann den Anhang sichern und dann ausführen. Ist eine sinnvolle Sicherheitsmaßnahme. Mail bietet aber die Möglichkeit über Regeln bei bestimmten Absendern ein lokales Skript zu starten. Dieses könnte den Inhalt der Mail auswerten und Deinen Filemaker steuern. Bzw. könnte man versuchen den Anhang per Skript zu sichern, auszuführen und nach Ausführung zu löschen.

Mit einem Link könntest Du den Skripteditor anskripten. Beispiel

Auf ausführen klicken und das Skript läuft.
Ist jetzt ein Beispiel für dieses Board. In Mail müsste der Link anders aussehen.

Etwa so:

Code:
<a href="applescript://com.apple.scripteditor?action=new&script=say%20%22macuser%20is%20cool%22">Beispiel</a>

Wobei dieses Beispiel nicht korrekt in Mail angezeigt wird. Warum auch immer...

Gruß Andi
 
Hallo Andi,
Hallo Jochen,

tolle Idee die Mail mit Applescript auszulesen und daraufhin Filemaker zu triggern. Da ich mich mit Applescript überhaupt nicht auskenne, benötige ich jedoch noch etwas coaching.

Untenstehende Mail soll durch einen durch Entourage gestartetes Script ausgelesen werden. Dabei soll die Kundennummer ins Clipboard gepeichert werden und das Script "Kunde von EMail aufrufen" innerhalb der Datenbank "Adressen" aufgerufen werden, welches wiederum mit Hilfe dr Kundennummer im Clipboard den gewünschten Datensatz suchen kann. Ich habe vorsorglich die Kundennummer in doppelt geschweifte Klammern gesetzt, was sicherlich das Auslesen erleichtert.

Danke für eure Hilfe :)

Mat



Hier die Beispielmail:

----------------------------------------------------------------------
TERMIN FÜR DICH GESETZT FÜR DEN 19.02.2005 UM 12:00:00

KdNr: {{ 5935 }}

Firma
Ansprechspartner
Straße
PLZ Ort
Land
fon: 040 12345678
fax: 040 12345679
mailto:test@test.de
 
mat-hh schrieb:
Danke für eure Hilfe :)

Mat

Werde sobald ich Zeit habe mal ein paar Schnipsel meiner Lösung Dir schicken, damit Du etwas Vergleichbares bei Dir bauen kannst.
Welchen Weg brauchst Du genau?
a) Aus Filemaker eine Mail in Entourage generieren ODER
b) Aus Entourage eine Mail parsen und die Daten an Filemaker übergeben
c) oder beides?
 
Könntest du das für den Fall B hier reinstellen? Mich interessiert, wie so eine Textdatenverarbeitung mit Applescript funktioniert.
 
Hallo JochenN!

Welchen Weg brauchst Du genau?
a) Aus Filemaker eine Mail in Entourage generieren ODER
b) Aus Entourage eine Mail parsen und die Daten an Filemaker übergeben
c) oder beides?

Auf jeden Fall (B) -> eine Mail parsen und die Daten an Filemaker übergeben.

Obwohl ich bei der Generierung einer Mail mit dem Filemaker-Mailbefehl immer das Problem habe, das die Mails im Entourage Entwürfe-Ordner abgelegt werden. Dieses Problem gibts bei Mail nicht, weshalb ich gerade zwei Mailprogramme benutze: Entourage für den täglichen EMailverkehr und Mail für Mails die aus Filemaker generiert werden.

Danke für deine Hilfe.

Mat
 
mat-hh schrieb:
Auf jeden Fall (B) -> eine Mail parsen und die Daten an Filemaker übergeben.

Obwohl ich bei der Generierung einer Mail mit dem Filemaker-Mailbefehl immer das Problem habe, das die Mails im Entourage Entwürfe-Ordner abgelegt werden. Dieses Problem gibts bei Mail nicht, weshalb ich gerade zwei Mailprogramme benutze: Entourage für den täglichen EMailverkehr und Mail für Mails die aus Filemaker generiert werden.

Danke für deine Hilfe.

Mat

Ich werde heute abend mal für den Weg Entourage -> Filemaker meine AppleScripts hier veröffentlichen.

Das mit dem Ablegen im entwürfe-Ordner hab ich bei mir nicht. Die Mails werden im Postausgang abgelegt, so dass ich sie dort noch ggf. editieren und dann abschicken kann. Auch diesen Schritt könnte mal per AppleScript automatisieren, will ich aber nicht. Sieh Dich einfach mal im AppleScript-Verzeichnis von Entourage um. (ScriptEditor -> Ablage/Verzeichnis öffnen -> Microsoft Entourage auswählen -> Stöbern...
 
JochenN schrieb:
Ich werde heute abend mal für den Weg Entourage -> Filemaker meine AppleScripts hier veröffentlichen.

Hallo Jochen,

ich wollte mal nachfragen, wann du die AppleScripts zur Ansteuerung von Filemaker über Entourage veröffentlichst. Danke schon einmal im voraus.

Beste Grüße,

Mat
 
mat-hh schrieb:
Hallo Jochen,

ich wollte mal nachfragen, wann du die AppleScripts zur Ansteuerung von Filemaker über Entourage veröffentlichst. Danke schon einmal im voraus.

Beste Grüße,

Mat

Sorry, bin noch nicht dazu gekommen. Wahrscheinlich jetzt am Wochenende.
 
mat-hh schrieb:
Hallo Jochen,

ich wollte mal nachfragen, wann du die AppleScripts zur Ansteuerung von Filemaker über Entourage veröffentlichst. Danke schon einmal im voraus.

Also erstmal der Weg Filemaker->Entourage:
1. Hier mal die felddefinition in Filemaker (Ergebnistyp natürlich Text), um in ein Feld einen lauffähigen AppleScript-code reinzuschreiben:
"set bpfad to ""Macintosh HD:Users:<user>:Documents:<RestDesPfades>:""" & "¶" &
Wenn(Vorkasse="Ja";
"set att1 to (bpfad & """ & Adressen::MailAttachmentFileRumpf & "-" & (Adressen::AnzahlGesendeteMails-1) & ".pdf" & """)¶" &
"set attfile1 to alias att1" & "¶" &
"set att2 to (bpfad & """ & Adressen::MailAttachmentFileRumpf & "-" & Adressen::AnzahlGesendeteMails & ".pdf" & """)¶" &
"set attfile2 to alias att2" & "¶" &
"set attlist to {attfile1,attfile2}" & "¶";

"set att1 to (bpfad & """ & Adressen::MailAttachmentFile & """)¶" &
"set attfile1 to alias att1" & "¶" &
"set attlist to {attfile1}" & "¶")
&
"set newRec to """ & eMailwenn & """¶" &
"set newSubject to """ & MailSubject & """¶" &
"set newMailtext to the clipboard as text" & "¶" &

"tell application ""Microsoft Entourage""" & "¶" &
" set newMessage to make new outgoing message with properties {attachment:attlist, recipient:newRec, encoding:base64, use Windows file names:true, subject:newSubject, content:newMailtext}" & "¶" &
" send newMessage with sending later" & "¶" &
"end tell"


Dann 2. das, was letztlich in diesem Feld steht (zum Vergleich):
set bpfad to "Macintosh HD:Users:<user>:Documents:<RestDesPfades>:"
set att1 to (bpfad & "huber-979-1.pdf")
set attfile1 to alias att1
set att2 to (bpfad & "huber-979-2.pdf")
set attfile2 to alias att2
set attlist to {attfile1,attfile2}
set newRec to "kurt.huber@t-online.de" -- ist hier nur ein Dummyname
set newSubject to "Ihre Bestellung; Auftragsbestätigung und Rechnung"
set newMailtext to the clipboard as text
tell application "Microsoft Entourage"
set newMessage to make new outgoing message with properties {attachment:attlist, recipient:newRec, encoding:base64, use Windows file names:true, subject:newSubject, content:newMailtext}
send newMessage with sending later
end tell

3. Jetzt der Weg, auf dem eingehende Mail von entourage nach Filemaker übertragen werden (Achtung, etwas längerer Text, trotzdem nur in Ausschnitten, daher *so nicht lauffähig*!!):
global email, nname, vname, titel, str, plz, ort, tel, fax, menge, artcode, firma, land, info, bestinfo

set text item delimiters to {}
set NKCount to 0
set PosCount to 0
set na to 0
set astring to "Aktualisierung"
set nb to 0
set bstring to "Bestellung"
set nr to 0
set rstring to "Registrierung"

set bpfad to "Macintosh HD:Users:<user>:Documents:<RestDesPfades>"
set n to 0
set bestfolder to bpfad & ":Grafik:Website:data1:"
set bestfolderlist to (list folder bestfolder without invisibles)

-- zunächst analysieren, wieviele Mails von welchem Typ
tell application "Microsoft Entourage"
try
set mlist to selection
repeat with m in mlist
set sub to (get subject of m)
set read status of m to read
if sub = astring then set na to na + 1
if sub = bstring then set nb to nb + 1
if sub = rstring then set nr to nr + 1
end repeat
if (nb + nr) = 0 then display dialog "Eine verwendbare Auswahl an Mails wurde nicht erkannt." buttons {"OK"} default button 1
if na > 0 then display dialog "Die Aktualisierung(en) bitte manuell vornehmen." buttons {"OK"} default button 1
on error
display dialog "Eine verwendbare Auswahl an Mails wurde nicht erkannt." buttons {"OK"} default button 1
end try
end tell

-- dann die Registrierungen abarbeiten
-- (hier weggelasssen)
-- dann die Bestellungen abarbeiten
if nb > 0 then
set posfilename to "Positionen"
set posfilespec to bestfolder & posfilename
if posfilename is in bestfolderlist then tell application "Finder" to delete alias posfilespec -- ggf. altes File von letztem Mal löschen
set posfile to (open for access file posfilespec with write permission)

repeat with m in mlist
tell application "Microsoft Entourage" to set sub to (get subject of m)
if sub = bstring then
set email to ""
set menge to ""
set artcode to ""
set bestinfo to ""

tell application "Microsoft Entourage" to set mtext to paragraphs of (get content of m)
set BestinfoSection to false
repeat with zeile in mtext
if BestinfoSection then -- dann evtl. mehrzeilige Bestellinfo einlesen; damit aufhören, wenn nächster Abschnitt kommt
if (zeile starts with "agbcheck:") or (zeile starts with "emm:") then
set BestinfoSection to false
else
set bestinfo to bestinfo & return & zeile
end if
else
set zl to (length of zeile)
if zeile contains ":" and zl > ((offset of ":" in zeile) + 1) then
set zoffset to (offset of ":" in zeile)
set zinfo to (characters (zoffset + 2) thru zl of zeile) as string
set zinfo to cleanstring(zinfo)

if zeile begins with "email:" then
set email to zinfo
tell application "FileMaker Pro"
launch
open (bpfad & ":<Pfad>:Adressen")
do script "Alle aufrufen"

try
show (every record whose cell "email" contains ("\"" & email & "\""))
on error
--Dialogfenster mit Fehlermeldung

end try
end tell
end if
if zeile begins with "bp-" then -- das hier ist etwas Spezifisches, das nur für meine Website gilt
set artcode to (characters 4 thru ((offset of "|" in zeile) - 1) of zeile) as string
set menge to zinfo
tell me to WriteToPosFile(posfile) -- Bestellposition wegschreiben
set PosCount to PosCount + 1
end if
if zeile begins with "roaf:" then MoreBestInfo("Anzahl Flaschen", zinfo)
if zeile begins with "roap:" then MoreBestInfo("Anzahl Positionen", zinfo)
if zeile begins with "rovk:" then MoreBestInfo("Versandkosten", zinfo)
if zeile begins with "sabh:" then set bestinfo to bestinfo & return & "-SELBSTABHOLER ohne Versandkosten"
if zeile begins with "vork:" then set bestinfo to bestinfo & return & "-VORKASSE mit 2% Rabatt gewählt"
if zeile begins with "rorb:" then MoreBestInfo("Rechnungsbetrag", zinfo)
if zeile begins with "btext:" then -- Der BestellHinweisText kann mehrere Zeilen haben und ist erst mit "AGBCHECK on" definitiv zuende
MoreBestInfo("Besondere Hinweise", zinfo)
set BestinfoSection to true
end if
end if
end if
end repeat -- Mail zu Ende gelesen, Auswertung kann beginnen

tell application "FileMaker Pro"
launch
open (bpfad & ":<Pfad>:Adressen")
do script "Alle aufrufen"

try
show (every record whose cell "email" contains ("\"" & email & "\""))

set anzk to (the number of records) -- Anzahl Kunden mit dieser eMail-Adresse
if anzk = 1 then
set cell "Aktuelle Bestellinfo" of current record of database "Adressen" to bestinfo
set cell "email letzte Bestellung" of current record of database "Adressen" to email

else if anzk < 1 then
display dialog "Keinen Kunden mit eMail-Adresse '" & email & "' gefunden!" buttons {"OK"} default button 1
else
display dialog "Mehr als 1 Kunde mit eMail-Adresse '" & email & "' vorhanden!" buttons {"OK"} default button 1

end if

on error
--display dialog "error"
end try

end tell

end if
end repeat

close access posfile

if PosCount > 0 then
tell application "FileMaker Pro"
launch
open (bpfad & ":<Pfad>:Verkaufsdaten")
do script "Mail-Bestellpositionen importieren"
display dialog "Es wurden angelegt:" & return & "Bestellpositionen:" & tab & (PosCount as text) & return & "Neue Kunden:" & tab & (NKCount as text) buttons {"OK"} default button 1
open (bpfad & ":<Pfad>:Adressen")
do script "Alle aktuellen InetBestellungen suchen"
end tell
else
display dialog "Keine Bestellpositionen gefunden!" buttons {"OK"} default button 1
end if

end if



Das Ganze ist eine Mischung aus direktem Lesen und Schreiben aus AppleScript bzw. Entourage in Filemaker und einem aus Performancegründen eingeführten Erzeugen eines textfiles, das dann in FM importiert wird.

Einfach mal wirken lassen, you'll get the message.
 
Hi Jochen,

den Code muss ich wirklich erst einmal auf mich wirken lassen :) Ich check das am Wochenende mal aus. Vielen Dank für deine Mühe.

Beste Grüße aus Hamburg,

Mat
 
Hallo Jochen,

die Einbindung deines Script (natürlich verändert) in Entourage klappt wirklich prima.
Vielen Dank für deine Hilfe!

Mat
 
mat-hh schrieb:
Hallo Jochen,

die Einbindung deines Script (natürlich verändert) in Entourage klappt wirklich prima.
Vielen Dank für deine Hilfe!

Mat

Schön, das es geholfen hat. Ich habe mich damals (Januar 2004) bei der Umstellung meines "Bestellwesens" von MacOS 9 nach X länger mit dem Scripting von Entourage und Filemaker herum geschlagen. Seit dem klappt diese Lösung aber ziemlich gut.

Viel Erfolg weiterhin!
 
Zurück
Oben Unten