我倾向于在 Outlook 联系人的 Notes 字段中存储大量信息。
在 Outlook 2013 中访问特定联系人的详细信息需要在 Windows 桌面上执行许多步骤:
- 打开 Outlook
- 切换到联系人视图
- 按姓名搜索联系人
- 打开联系人的统一“人员视图”
- 打开完整的 Outlook 联系人卡片
作为高级用户,我想使用一些脚本:
Win-R oc John Smith
Win-R
打开窗口的快捷方式在哪里Run...
,以及oc
是否会使用某种类型的脚本(PowerShell,VBA,Perl,?)来直接打开给定名称的详细 Outlook 联系人卡。
有什么办法可以实现这个吗?如果有具体的代码就更好了。
(请注意,不幸的是,Outlook 2013 不再允许 Windows Search 访问其内容。)
谢谢。
答案1
Powershell 示例可帮助您入门:
$outlook = new-object -com Outlook.Application
$contactFolder = $outlook.session.GetDefaultFolder(10)
$contacts = $contacts.Items
$firstContact = $contacts.GetFirst()
$contact.FirstName
$contact.Email1Address
它创建与 Outlook 的 COM 连接(必须安装),
然后查找联系人文件夹(#10),
然后从文件夹中获取所有联系人项目,
然后获取第一个联系人项目
,最后显示该联系人的名字和主要电子邮件地址。
更多信息:
答案2
Windows 桌面搜索 4.0:
命令行(如果需要):
WindowsSearch /url search-ms:query=(jaiPhone)kind:contacts
答案3
经过多次试验后,我使用以下 Perl 脚本找到了解决方案:
#!/usr/bin/perl
use strict;
use warnings;
use Win32::OLE qw(in with);
$Win32::OLE::Warn = 2;
use Win32::OLE::Variant; # to get Date scalar
my $olFolderContacts = 10; # = olFolderContacts
my $outlook;
eval {
$outlook = Win32::OLE->GetActiveObject('Outlook.Application');
};
die "$@\n" if $@;
if (!defined $outlook) {
$outlook = Win32::OLE->new('Outlook.Application')
or die "Oops, cannot start Outlook: ", Win32::OLE->LastError, "\n";
}
my $mapi = $outlook->GetNamespace('MAPI'); # see class NameSpace
my $searchname = "@ARGV";
my $contacts = $mapi->GetDefaultFolder($olFolderContacts); # (FolderType As OlDefaultFolders) As Folder
# also olFolderCalendar, olFolderDeletedItems, olFolderDrafts, olFolderInbox, olFolderSuggestedContacts, ...
my @found;
for my $contact (in $contacts->{Items}) {
my $name = $contact->{"FullName"};
if ($name =~ /\b${searchname}\b/i) { push(@found, $contact); }
}
if (!@found) { die "Contact '$searchname' not found\n"; }
if (@found>1) {
warn "Found multiple contacts matching '$searchname':\n";
for (@found) { my $name = $_->{"FullName"}; warn "$name\n"; }
exit 1;
}
my $contact = $found[0];
my $name = $contact->{"FullName"};
warn "Found '$name'\n";
$contact->Display;