Можно ли программно получить доступ к списку контактов в Outlook с помощью Office Add In
Я создаю Add In, который должен захватывать в дополнение к списку контактов, которые имеет учетная запись, контакты (с, cc и bcc), которые используются в текущем элементе (сообщении).
Согласно документации, следующая инструкция дала мне ноль контактов, хотя у меня есть контакты в книге контактов и чтение сообщения с отправителем электронной почты.
var contacts = Office.context.mailbox.item.getEntities().contacts;
Мне нужно получить список контактов, которыми я управляю в своей учетной записи:
Этот список доступен с помощью API-интерфейсов с открытым графом. Интересно, он также доступен локально с помощью объекта Office для надстроек Office
3 ответа
Office Js не предоставляет API для получения списка контактов в учетной записи. Но вы можете получить токен авторизации из Outlook, используя API аутентификации, а затем использовать этот токен, чтобы получить токен Graph для взаимодействия с API API Graph и получить список контактов.
Office.context.auth.getAccessTokenAsync(function (result) {
if (result.status === "succeeded") {
// Use this token to call Web API
var ssoToken = result.value;
// Now send this token to your server and acquire a Graph token
// Server can talk to Graph APIs and get contacts to display
} else {
// Handle error
}
});
Создайте надстройку Node.js Office, которая использует единый вход
Похоже, вы неправильно поняли документацию.
Цитата:
В следующем примере осуществляется доступ к объектам контактов в теле текущего элемента.
var contacts = Office.context.mailbox.item.getEntities().contacts;
Вы можете получить все контакты, используя ссылку ниже:
Microsoft.Office.Interop.Outlook.Items OutlookItems;
Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();
MAPIFolder Folder_Contacts;
Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
OutlookItems = Folder_Contacts.Items;
MessageBox.Show("Wykryto kontaktów: " + OutlookItems.Count.ToString());
for (int i = 0; i < OutlookItems.Count; i++)
{
Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i+1];
sNazwa = contact.FullName;
sFirma = contact.CompanyName;
sAdress = contact.BusinessAddressStreet;
sMiejscowosc = contact.BusinessAddressPostalCode + " " + contact.BusinessAddressCity;
sEmail = contact.Email1Address;
dataGridView1.Rows.Add(sNazwa, sFirma, sAdress, sMiejscowosc, sEmail);
}
Для получения дополнительной информации, пожалуйста, обратитесь к ссылке ниже: