Как открыть контакт Outlook с помощью сценария командной строки Windows?

Я склонен хранить много информации в полях заметок контактов Outlook.

доступ к этой подробной информации для конкретного контакта в Outlook 2013 требует много шагов на рабочем столе Windows:

  • Открытие Outlook
  • переключение на контакты
  • поиск контакта по имени
  • открытие единого контакта "люди"
  • открытие полной карточки контакта Outlook

As опытный пользователь, я хотел бы вместо этого использовать какой-то скрипт:

Win-R oc John Smith

здесь Win-R - это ярлык для открытия Run... окно ,
и oc был бы какой-то тип сценария (PowerShell, VBA, Perl,?), чтобы непосредственно открыть подробную карточку контакта Outlook для данного имени.

есть ли способ достичь этого? Конкретный код был бы великолепен.

(обратите внимание, что, к сожалению, Outlook 2013 больше не делает его содержимое доступным для Windows Поиск.)

спасибо.

30
задан Hugues
24.01.2023 16:10 Количество просмотров материала 3186
Распечатать страницу

3 ответа

пример Powershell, чтобы вы начали:

$outlook = new-object -com Outlook.Application
$contactFolder = $outlook.session.GetDefaultFolder(10)
$contacts = $contacts.Items
$firstContact = $contacts.GetFirst()
$contact.FirstName
$contact.Email1Address

создает COM-соединение с Outlook (должно быть установлено),

затем ищет папку контактов (#10),

затем получает все контактные элементы из папки

затем получает первый контактный элемент

и, наконец, отображает имя контакта и основной адрес электронной почты.

Подробнее:

2
отвечен Ƭᴇcʜιᴇ007 2023-01-25 23:58

после долгих экспериментов, я нашел решение, используя следующий скрипт:

#!/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;
0
отвечен Hugues 2023-01-26 04:32

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

contacts
microsoft-outlook
microsoft-outlook-2013
powershell
vba
Вверх