Adressbuch - csv-Konverter
csv2vCard v0.4 (© by skeeve)
Dieses mit perl bestückte Applescript konvertiert eine csv-Datei (genauer: eine tsv-Datei, also tabulator-getrennte Datei) in eine vcf-Datei (Visitenkarte) für den Import ins Apple Adressbuch. Somit ließen sich beispielsweise als tab-separierte Textdateien exportierte Excel-Tabellen mit Kontaktinformationen ins Adressbuch übernehmen.
Voraussetzungen:
1) Die Datei ist als UTF-8 gespeichert
2) Die 1. Zeile beinhaltet die Spaltenüberschrifen
3) Die Spaltenüberschriften sind:
(Nicht alle Spaltenüberschriften müssen da sein. Die Reihenfolge der Spalten ist beliebig.)
Praefix
Vorname
Zweiter Vorname
Nachname
Geburtsname
Suffix
Spitzname
Berufliche Kontaktdaten
Abteilung
Position
E-Mail (Arbeit)
Strasse (Arbeit)
PLZ (Arbeit)
Stadt (Arbeit)
Land (Arbeit)
Fax (Arbeit)
Telefon (Arbeit)
Telefon (Zentrale)
Telefon (Mobil)
Pager
AIM (Arbeit)
ICQ (Arbeit)
Jabber (Arbeit)
MSN (Arbeit)
Yahoo (Arbeit)
Private Kontakdaten
Homepage
Strasse (Privat)
PLZ (Privat)
Stadt (Privat)
Land (Privat)
Telefon (Privat)
Fax (Privat)
AIM (Privat)
ICQ (Privat)
Jabber (Privat)
MSN (Privat)
Yahoo (Privat)
Das Skript als Application speichern:
-- csv2vcf v0.4
-- © 2007 by skeeve (csv2vcf.question.skeeve et xoxy dot net)
-- this Script is under GPL
-- :::::::::::::::::::::::::::::::::::::::: hohabadu.de ::::::::::::::::::::::::::::::::::::::::
property VCARD : "BEGIN:VCARD
VERSION:3.0
N:<Nachname>;<Vorname>;<Zweiter Vorname>;<Praefix>;<Suffix>
FN:<Praefix[ ]><Nachname[ ]><Vorname[ ]><Suffix[ ]><Zweiter Vorname>
NICKNAME:<Spitzname>
X-MAIDENNAME:<Geburtsname>
ORG:<Firma>;<Abteilung>
TITLE:<Position>
EMAIL;TYPE=INTERNET,WORK:<E-Mail (Arbeit)>
EMAIL;TYPE=INTERNET,HOME:<E-Mail (Privat)>
URL:<Homepage>
TEL;TYPE=WORK:<Telefon (Arbeit)>
TEL;TYPE=WORK,CELL:<Telefon (Mobil)>
TEL;TYPE=HOME:<Telefon (Privat)>
TEL;TYPE=MAIN:<Telefon (Zentrale)>
TEL;TYPE=HOME,FAX:<Fax (Privat)>
TEL;TYPE=WORK,FAX:<Fax (Arbeit)>
TEL;TYPE=PAGER:<Pager>
ADR;TYPE=WORK:;;<Strasse (Arbeit)>;<Stadt (Arbeit)>;;<PLZ (Arbeit)>;<Land (Arbeit)>
ADR;TYPE=HOME:;;<Strasse (Privat)>;<Stadt (Privat)>;;<PLZ (Privat)>;<Land (Privat)>
BDAY;VALUE=DATE:<Geburtstag>
X-AIM;TYPE=WORK:<AIM (Arbeit)>
X-JABBER;TYPE=WORK:<Jabber (Arbeit)>
X-MSN;TYPE=WORK:<MSN (Arbeit)>
X-YAHOO;TYPE=WORK:<Yahoo (Arbeit)>
X-ICQ;TYPE=WORK:<ICQ (Arbeit)>
X-AIM;TYPE=HOME:<AIM (Privat)>
X-JABBER;TYPE=HOME:<Jabber (Privat)>
X-MSN;TYPE=HOME:<MSN (Privat)>
X-YAHOO;TYPE=HOME:<Yahoo (Privat)>
X-ICQ;TYPE=HOME:<ICQ (Privat)>
END:VCARD"
on run
tell me to open {choose file with prompt "Bitte eine tabulator-getrennte Datei wählen" without invisibles}
end run
on open this_items
set fle to first item of this_items
if (info for fle) is not folder then
set conversion to convert(fle)
if conversion is not false then
tell application "Finder" to open ((POSIX file conversion) as alias)
end if
end if
end open
on convert(fle)
set conversion to do shell script "perl -e " & (quoted form of ("
use strict;
use warnings;
use utf8;
my $VCARD= <<':';
" & VCARD & "
:
open STDERR,'>/dev/console';
print STDERR '-' x 79,qq(\\n);
print STDERR $VCARD;
print STDERR '-' x 79,qq(\\n);
my ($infile)= @ARGV;
my $outfile= $infile;
$outfile=~ s/(\\.[^.]+)?$/.vcf/;
open my $in, '<:utf8', $infile or die \"$!\\n\";
open my $out, '>:encoding(UTF-16)', $outfile or die \"$!\\n\";
$_=<$in>;
tr/\\012\\015//d;
my @column= split /\\t/;
while (<$in>) {
my %line;
tr/\\012\\015//d;
s/([,;])/\\\\$1/g;
@line{@column}= split /\\t/;
$_= $VCARD;
s/<([^>]+?)(?:\\[([^>\\]]+)\\])?>/($line{$1}?$line{$1}.($2||''):'')/ge;
s/^[^:\\n]+:\\s*\\n//mg;
next if /^N:;+$/m;
print $out $_;
}
close $in;
close $out;
print \"OK\\n$outfile\";")) & " " & (quoted form of POSIX path of fle)
if conversion starts with "OK" then return second paragraph of conversion
return false
end convert
Im Scripteditor öffnen
-- © 2007 by skeeve (csv2vcf.question.skeeve et xoxy dot net)
-- this Script is under GPL
-- :::::::::::::::::::::::::::::::::::::::: hohabadu.de ::::::::::::::::::::::::::::::::::::::::
property VCARD : "BEGIN:VCARD
VERSION:3.0
N:<Nachname>;<Vorname>;<Zweiter Vorname>;<Praefix>;<Suffix>
FN:<Praefix[ ]><Nachname[ ]><Vorname[ ]><Suffix[ ]><Zweiter Vorname>
NICKNAME:<Spitzname>
X-MAIDENNAME:<Geburtsname>
ORG:<Firma>;<Abteilung>
TITLE:<Position>
EMAIL;TYPE=INTERNET,WORK:<E-Mail (Arbeit)>
EMAIL;TYPE=INTERNET,HOME:<E-Mail (Privat)>
URL:<Homepage>
TEL;TYPE=WORK:<Telefon (Arbeit)>
TEL;TYPE=WORK,CELL:<Telefon (Mobil)>
TEL;TYPE=HOME:<Telefon (Privat)>
TEL;TYPE=MAIN:<Telefon (Zentrale)>
TEL;TYPE=HOME,FAX:<Fax (Privat)>
TEL;TYPE=WORK,FAX:<Fax (Arbeit)>
TEL;TYPE=PAGER:<Pager>
ADR;TYPE=WORK:;;<Strasse (Arbeit)>;<Stadt (Arbeit)>;;<PLZ (Arbeit)>;<Land (Arbeit)>
ADR;TYPE=HOME:;;<Strasse (Privat)>;<Stadt (Privat)>;;<PLZ (Privat)>;<Land (Privat)>
BDAY;VALUE=DATE:<Geburtstag>
X-AIM;TYPE=WORK:<AIM (Arbeit)>
X-JABBER;TYPE=WORK:<Jabber (Arbeit)>
X-MSN;TYPE=WORK:<MSN (Arbeit)>
X-YAHOO;TYPE=WORK:<Yahoo (Arbeit)>
X-ICQ;TYPE=WORK:<ICQ (Arbeit)>
X-AIM;TYPE=HOME:<AIM (Privat)>
X-JABBER;TYPE=HOME:<Jabber (Privat)>
X-MSN;TYPE=HOME:<MSN (Privat)>
X-YAHOO;TYPE=HOME:<Yahoo (Privat)>
X-ICQ;TYPE=HOME:<ICQ (Privat)>
END:VCARD"
on run
tell me to open {choose file with prompt "Bitte eine tabulator-getrennte Datei wählen" without invisibles}
end run
on open this_items
set fle to first item of this_items
if (info for fle) is not folder then
set conversion to convert(fle)
if conversion is not false then
tell application "Finder" to open ((POSIX file conversion) as alias)
end if
end if
end open
on convert(fle)
set conversion to do shell script "perl -e " & (quoted form of ("
use strict;
use warnings;
use utf8;
my $VCARD= <<':';
" & VCARD & "
:
open STDERR,'>/dev/console';
print STDERR '-' x 79,qq(\\n);
print STDERR $VCARD;
print STDERR '-' x 79,qq(\\n);
my ($infile)= @ARGV;
my $outfile= $infile;
$outfile=~ s/(\\.[^.]+)?$/.vcf/;
open my $in, '<:utf8', $infile or die \"$!\\n\";
open my $out, '>:encoding(UTF-16)', $outfile or die \"$!\\n\";
$_=<$in>;
tr/\\012\\015//d;
my @column= split /\\t/;
while (<$in>) {
my %line;
tr/\\012\\015//d;
s/([,;])/\\\\$1/g;
@line{@column}= split /\\t/;
$_= $VCARD;
s/<([^>]+?)(?:\\[([^>\\]]+)\\])?>/($line{$1}?$line{$1}.($2||''):'')/ge;
s/^[^:\\n]+:\\s*\\n//mg;
next if /^N:;+$/m;
print $out $_;
}
close $in;
close $out;
print \"OK\\n$outfile\";")) & " " & (quoted form of POSIX path of fle)
if conversion starts with "OK" then return second paragraph of conversion
return false
end convert
Im Scripteditor öffnen
ICQ
AIM
