On Tue, Apr 20, 2004 at 10:50:01PM -0500, Ken Williams wrote:
> Say, I built the Address_Book glue and looked through its docs, but I
> don't see methods to search the database for entries that have certain
> properties. Do you know of any way to use the "Find" functionality, or
> specify required properties, using the applescript/glue interface?
Here's the script I use for querying my addressbook from mutt.
The output format is specific to the mutt interface,
but the commented out section shows how to get the address info.
rick
cut here ---
#!/usr/local/bin/perl
use Mac::Glue qw(:glue);
use Mac::Apps::Launch;
my $glue=Mac::Glue->new('Address Book',bundle=>'com.apple.AddressBook');
my $id=$glue->{ID};
if(!IsRunning($id)) {
LaunchApps($glue->{ID}) or die $^E;
$glue->close($glue->prop('window')) or warn $^E;
}
my $q=shift;
print "Querying AddressBook...\n";
my @people=$glue->obj('people')->get;
foreach my $entry (@people) {
my @emails=$entry->prop('email')->get;
next unless @emails;
foreach my $email (@emails) {
my $addr=$email->prop('value')->get;
my $name=$entry->prop('name')->get;
print "$addr\t$name\t",$email->prop('label')->get,"\n"
if $name =~ /$q/ || $addr =~ /$q/;
}
#my($addr)=$entry->prop('address')->get;
#next unless $addr;
#print $addr->prop('street')->get,"\n";
#print $addr->prop('city')->get," ";
#print $addr->prop('state')->get," ";
#print $addr->prop('zip')->get,"\n";
}
exit 0;