JavaScript API for Office Outlook Add-in - “一页纸文档“

上一篇文章 Office Add-in Model 为 Outlook Mail Add-in 提供的 JavaScript API 介绍 ,简单地在表格中列出了所有的 Object 定义,但是个人感觉表格仅适合列一些简单的内容,太多的话就不再直观了。本文沿着上篇的骨骼,对每个 Object 及 API 进行了扩展, 多数的东西都来自于官方文档( 尽量把分散在各地的补充说明归纳起来),我写这篇博文的目的并不是想把所有的 Object、方法、属性都涵盖,更多地是从 agile 开发的角度出发,这样我们在开发 Outlook Mail Add-in 的时候就能更快地找到合适的 API 及其定义了。

本文将从 Object Model 的角度更详细的罗列出 Mail Add-in 中可以访问的 Object 以及它所提供的方法和属性。

Office

Office Object 表示 Add-in 的一个实例, 它是调用其它API相关的 Object (如Context等) 的入口。

代码示例(本文中所有代码示例如无特殊注明,均为 JavaScript 代码):

Office

Office.js版本:此 Object 在 Office.js v1.0 中引入, 最后一次更新是在 v1.1中。

在哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: N/A

官方文档:https://msdn.microsoft.com/en-us/library/office/fp142234.aspx

Office.context

Context Object 表示 Add-in 的运行时环境信息,并提供调用关键 Object(如 Mailbox) 上 API 的入口

代码示例:

Office.context

Office.js版本:此 Object 在 Office.js v1.0 中引入,后续无更新。

在哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: N/A

官方文档: https://msdn.microsoft.com/EN-US/library/office/fp161104.aspx

Office.context.roamingSettings

RoamingSettings Object 用来存储per user,per add-in的custom settings。RoamingSettings 中的值只能被创建该值的用户所访问 ( 这也是 RoamingSettings 和 下文提到的 Office.context.mailbox.item.loadCustomPropertiesAsync()不同的地方),并且只能在被创建该值的 add-in 中访问到。Setting 的key是字符串类型的, value 的类型则可以是string、number、boolean、null、object或者array。

RoamingSettings Object是作为 Context 对象的一部分自动加载的, 当 add-in 被激活后,便可以通过访问 roamingSettings 来获得或设置其中的值。

代码示例:

var _settings;
var _customerName;

// The initialize function is required for all add-ins.
Office.initialize = function () {
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run

        // Initialize instance variables to access API objects.
        _settings = Office.context.roamingSettings;

        // Set new settings
        _settings.set("customerName", "Paul");
        _settings.saveAsync(saveMyAppSettingsCallback);

        // Load existing settings.
        _customerName = _settings.get("customerName");

        // Remove an existing setting.
        _settings.remove("customerName");
        _settings.saveAsync(saveMyAppSettingsCallback);
    });
}

// Callback method after saving custom application roaming settings.
function saveMyAppSettingsCallback(asyncResult) {
    if (asyncResult.status == Office.AsyncResultStatus.Failed) {
        // Handle the failure.
    }
}

Office.js版本:此 Object 在 Office.js v1.0 中引入, 后续无更新。

哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: Restricted

官方文档:https://msdn.microsoft.com/en-us/library/office/jj220079.aspx

一些实例:Persist metadata for the same mailbox by using roaming settings

Office.context.mailbox

Mailbox Object 是 Office Add-in Object Model 的入口, 所有与邮件甚至邮箱用户信息相关的操作都需要通过 Office.context.mailbox 来调用。

代码示例:

Office.context.mailbox

Office.js版本:此 Object 在 Office.js v1.0 中引入, 后续无更新。

在哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: ReadWriteMailbox, but some members accessible with lesser permissions

官方文档:https://msdn.microsoft.com/EN-US/library/office/fp142162.aspx

Office.context.mailbox.userProfile

UserProfile Object 表示当前邮箱登录用户的信息, 它封装了用户的显示名称(Display Name)、邮箱地址、用户本地时区。

属性(Property) 类型 描述
displayName 字符串(string) 用于显示的用户名.
emailAddress 字符串(string) SMTP email address.
timeZone 字符串(string) Host 当前 add-in 的应用程序( Outlook richlient, 或 OWA 等)中设置的时区信息。

代码示例:

// The initialize function is required for all add-ins.
Office.initialize = function () {
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, addin-specific code can run.
        var userProfile = Office.context.mailbox.userProfile;

        // The user name to use for display.
        var name = userProfile.displayName;

        // The user‘s SMTP email address.
        var emailAdrress = userProfile.emailAddress;

        // The user‘s local time zone
        var timeZone = userProfile.timeZone;
    });
}

Office.js版本:此 Object 在 Office.js v1.0 中引入,后续无更新。

在哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: ReadItem

官方文档:https://msdn.microsoft.com/en-us/library/office/fp161126.aspx

Office.context.mailbox.item

Item Object 表示 host 并激活当前 Add-in 的邮件信息条目或者约会条目

Item Object 包含的方法和属性分别有:


方法(Method)


Outlook 模式


描述


在什么版本引入


loadCustomPropertiesAsync


撰写、读邮件(Compose or read)


为某个特定的邮件条目提供自定义的属性集合, 这些属性集合可以自由地添加或删除,他们保存在邮件服务器上。适用于存储一些针对于邮件条目的相关信息(可理解为邮件的 Property Bag)。


Version 1.0


getSelectedDataAsync


撰写、读邮件(Compose or read)


获得邮件主题或邮件正文中被选中的数据。


Version 1.2


setSelectedDataAsync


撰写、读邮件(Compose or read)


插入数据到邮件主题或正文中的当前选中区域中。


Version 1.2


close


撰写邮件(Compose)


关闭正在编辑的邮件,关于如何处理未保存的邮件,请参考该函数页面的具体描述。


Version 1.3


saveAsync


撰写邮件(Compose)


保存当前条目到草稿箱中。官网上说读邮件(Read)模式下也可用,但是个人理解,这个函数应该只是在撰写邮件模式下才可能调用。


Version 1.3


属性(Property)


Outlook 模式


描述


在什么版本引入


dateTimeCreated


读邮件(Read)


获得当前邮件条目创建的日期和时间。


Version 1.0


dateTimeModified


读邮件(Read)


获得当前邮件条目最后被修改的日期和时间。


Version 1.0


itemClass


读邮件(Read)


获得当前邮件条目的类别。对于邮件约会条目, 只有一个类别 IPM.Appointment; 对于邮件信息条目, 有如下几种类别: IPM.Note IPM.Schedule.Meeting.Request IPM.Schedule.Meeting.Neg IPM.Schedule.Meeting.Pos IPM.Schedule.Meeting.Tent IPM.Schedule.Meeting.Canceled


Version 1.0


itemId


读邮件(Read)


Gets the unique identifier for the item.


Version 1.0


itemType


撰写、读邮件(Compose or read)


Gets the type of the item.


Version 1.0

Item Object 是一个 base Object,其他的“表示特定条目的Object”(如 Appointment 和 Message )都是它的扩展, 可以根据 itemType 属性来判断是 Appointment 还是 Message。


Item type


Object


Meeting


Appointment


Message


Message

关于 Appointment 和 Message, 以及 MettingRequest Object 它们分别特有的方法、属性,可以参考如下链接, 接下来一一罗列。

Appointment Object 表示当前约会条目



其包含的方法与属性如下:


属性名


Outlook 模式


描述


从什么版本开始引入


attachments


读邮件(Read)


获得邮件会议或约会的附件信息,下文也有针对 Office.context.mailbox.item.attachments 的介绍。


Version 1.0


body


撰写邮件(Compose)


Gets a Body object that provides access the body text of the appointment.


Version 1.1


end


Compose or read


Gets a Date object that contains or a Time object that provides access to the date and time that the appointment is to end.


Version 1.0


location


Compose or read


Gets a string that contains or a Location object that provides access to the location of the appointment.


Version 1.0


normalizedSubject


Read


Gets the subject of the appointment, with all prefixes removed (including "RE:" and "FWD:").


Version 1.0


notificationMessages


Compose or read


Gets the notification messages for an appointment.


Version 1.3


optionalAttendees


Compose or read


Gets an EmailAddressDetails object that contains or a Recipients object that provides access to optional attendees.


Version 1.0


organizer


Read


Gets an EmailAddressDetails object that contains the organizer of the appointment.


Version 1.0


requiredAttendees


Compose or read


Gets an EmailAddressDetails object that contains or a Recipients object that provides access to required attendees.


Version 1.0


resources


Read


Gets an EmailAddressDetails object that contains a list of resources required for the meeting.


Version 1.0


start


Compose or read


Gets a Date object that contains or a Time object that provides access to the date and time that the appointment is to begin.


Version 1.0


subject


Compose or read


Gets a string that contains or a Subject object that provides access to the complete subject of the appointment with all prefixes.


Version 1.0


Method name


Outlook mode


Description


Introduced in


addFileAttachmentAsync


Compose


Adds files as attachments to the appointment.


Version 1.1


addItemAttachmentAsync

displayReplyAllForm

displayReplyForm


Compose

Read

Read


Adds mailbox items as attachments to the appointment.

Displays a reply form including organizer and attendees.

Displays a reply form including only the organizer.


Version 1.1

Version 1.0

Version 1.0


getEntities


Read


Returns all entities recognized in the appointment.


Version 1.0


getEntitiesByType


Read


Returns all entities of the specified type recognized in the appointment.


Version 1.0


getFilteredEntitiesByName


Read


Returns all matches recognized in the appointment that meet the requirements of the named filter.


Version 1.0


getRegExMatches


Read


Returns all regular expression matches recognized in the appointment.


Version 1.0


getRegExMatchesByName


Read


Returns all regular expression matches recognized in the appointment using the named regular expression.


Version 1.0


removeAttachmentAsync


Compose


Removes a specified or all attachments from the appointment.


Version 1.1

Message Object 表示当前邮件信息条目(区别于会议或约会)



Property name


Outlook mode


Description


Introduced in


attachments


Compose


Gets an array of attachments for the message.


Version 1.0


body


Compose


Gets a Body object that provides access the body text of the message.


Version 1.1


bcc


Compose


Gets a Recipients object that provides access to each recipient on the Bcc line of the message.


Version 1.1


cc


Compose or read


Gets a collection EmailAddressDetails object that contains or a Recipients object that provides access to each recipient on the Cc line of the message.


Version 1.0


conversationId


Compose or read


Gets the identifier for the conversation that the message is associated with.


Version 1.0


from


Read


Gets an EmailAddressDetails object for the message sender.


Version 1.0


internetMessageId


Read


Gets the unique Internet message identifier for the message.


Version 1.0


normalizedSubject


Read


Gets the subject of the message, with all prefixes removed (including "RE:" and "FWD:").


Version 1.0


notificationMessages


Compose or read


Gets the notification messages for a message.


Version 1.3


sender


Read


Gets an EmailAddressDetails object for the message sender.


Version 1.0


subject


Compose or read


Gets a string that contains or a Subject object that provides access to the complete subject of the message with all prefixes.


Version 1.0


to


Compose or read


Gets a collection EmailAddressDetails object that contains or a Recipients object that provides access to each recipient on the To line of the message.


Version 1.0


Method name


Outlook mode


Description


Introduced in


addFileAttachmentAsync


Compose


Adds files as attachments to the message.


Version 1.1


addItemAttachmentAsync

displayReplyAllForm

displayReplyForm


Compose

Read

Read


Adds mailbox items as attachments to the message.

Displays a reply form that includes the sender and all recipients of the selected message.

Displays a reply form that includes only the sender of the selected message.


Version 1.1

Version 1.0

Version 1.0


getEntities


Read


Returns all entities found in the message.


Version 1.0


getEntitiesByType


Read


Returns all entities of the specified type found in the message.


Version 1.0


getFilteredEntitiesByName


Read


Returns all matches recognized in the message that meet the requirements of the named filter.


Version 1.0


getRegExMatches


Read


Returns all regular expression matches found in the message.


Version 1.0


getRegExMatchesByName


Read


Returns all regular expression matches recognized in the message using the named regular expression.


Version 1.0


removeAttachmentAsync


Compose


Removes a specified or all attachments from the message.


Version 1.1

MeetingRequest Object 扩展了 Message Object,表示一个会议邀请



(The MeetingRequest object is returned as the item property of the Mailbox object. The MeetingRequest object extends the Message object. Represents a request to attend a meeting.)


Property name


Outlook mode


Description


Introduced in


end


Read


Gets the time that the meeting is to end.


Version 1.0


location


Read


Gets the location of the meeting.


Version 1.0


optionalAttendees


Read


Gets the list of optional attendees for the meeting.


Version 1.0


requiredAttendees


Read


Gets the list of required attendees for the meeting.


Version 1.0


resources


Read


Gets the list of resources needed for the meeting.


Version 1.0


start


Read


Gets the time that the meeting is to start.


Version 1.0

Office.context.mailbox.item 的返回值取决于当前查看的邮件条目类型。例如,如果当前邮件条目是信息条目,返回值为一个Message Object;如果是一个约会条目,返回值为一个 Appointment Object。

注意: 下文中介绍的 Office.context.mailbox.item 的子 Object 或方法,有些是与当前邮件类型相关的。例如同样是Office.context.mailbox.item,如果当前邮件条目为约会条目,则它有 requiredAttendees 属性;而如果是邮件信息条目,则它会有 cc、to 等属性。

代码示例:

// The initialize function is required for all add-ins.
Office.initialize = function () {
    /* Checks for the DOM to load using the jQuery ready function. */
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        var item = Office.context.mailbox.item;
        var subject = item.subject;
        // Continue with processing the subject of the current item, which can be a message or appointment.
    });
}

Office.js版本:此 Object 在 Office.js v1.0 中引入, 最后一次更新是在 v1.3中。

在哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: ReadItem

官方文档:

Item object:https://msdn.microsoft.com/EN-US/library/office/fp142177.aspx

Message Object: https://msdn.microsoft.com/EN-US/library/office/fp161175.aspx

MeetingRequest Object:https://msdn.microsoft.com/EN-US/library/office/fp142237.aspx?f=255&MSPPError=-2147217396

Appointment Object: https://msdn.microsoft.com/EN-US/library/office/fp160964.aspx

Office.context.mailbox.item.attachments

AttachmentDetails Object 表示当前邮件条目中包含的附件信息,它封装了如下属性:

属性(Property) 类型 描述
attachmentType Office.MailboxEnums.AttachmentType Gets one of the AttachmentType enumeration values that indicates whether the attachment is an Exchange item or a file.
contentType 字符串(string) Gets the MIME content type of the attachment.
id 字符串(string) Gets the Exchange Web Services (EWS) attachment identifier for the attachment.
isInline 布尔(boolean) Gets a value that indicates whether the attachment is an inline attachment. The isInline property indicates whether an attachment, such as an embedded image, should be displayed in the item.
name 字符串(string) Gets the name of the attachment.
size 整型(integer) Gets the size of the attachment in bytes. An integer that contains the size of the attachment in bytes.

其中 Office.MailboxEnums.AttachmentType 是个枚举类型,可取的值包括:

Enumeration 描述
Office.MailboxEnums.AttachmentType.File "file" The attachment is a file.
Office.MailboxEnums.AttachmentType.Item "item" The attachment is an Exchange item.

代码示例:

// An array of AttachmentDetail objects is returned as the attachments property of an Item,
// Appointment, or Message objects.
Office.context.mailbox.item.attachments

Office.js版本:此 Object 在 Office.js v1.0 中引入, 后续无更新。

在哪些 Outlook 模式中可用: 读邮件 (Read)

最低权限要求: ReadItem

官方文档:https://msdn.microsoft.com/EN-US/library/office/jj984592.aspx

Office.context.mailbox.item.body

Body Object 表示当前邮件信息或约会条目的正文内容, 它提供了一些方法来为邮件信息或约会条目增加/更新正文内容,如下表所示。

方法(Method) 描述
getAsync 以指定的格式("html" 或 "text" )获得当前用户在邮件主题或正文中选择的数据,该API 从 Office.js v1.3 版本引入,在撰写邮件、读邮件(Compose or Read) 两种模式下均可调用。
getTypeAsync 获得邮件正文内容格式,取值可以为 "html" 或 "text"。 V1.1 中引入。
prependAsync 在邮件正文的前面添加指定的内容,This method was introduced in version 1.1.
setAsync 利用指定的内容替换掉邮件原有内容,在 v1.3 中引入。
setSelectedDataAsync 利用指定的内容替换掉正文中选中部分,v1.1 引入。

代码示例:

Office.context.mailbox.item.body
TODO: 添加实例

Office.js版本:此 Object 在 Office.js v1.1 中引入, 最后一次更新是在 v1.3中。

在哪些 Outlook 模式中可用: 撰写邮件(Compose)

最低权限要求:ReadItem

官方文档:https://msdn.microsoft.com/EN-US/library/office/dn482486.aspx

Office.context.mailbox.item.subject

Subject Object 表示邮件信息或会议的主题。

  • Compose 模式下:Office.context.mailbox.item.subject 返回邮件会议或邮件信息的Subject Object, 该 Object 提供用于获得或设置邮件主题的方法:
方法(Method) 描述
getAsync 获得邮件信息或约会的主题。
setAsync 设置邮件信息或约会的主题,overrides 原有的主题,但是原来的“转发”、“Fwd:”、“Re:”将会保留。
  • Read 模式下:Office.context.mailbox.item.subject 返回邮件会议或者邮件信息的主题(字符串)。

代码示例:

Office.initialize = function () {
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        var item = Office.context.mailbox.item;

        // Get the subject of the item being composed.
        item.subject.getAsync(
            function (asyncResult) {
                if (asyncResult.status == Office.AsyncResultStatus.Failed){
                    console.write(asyncResult.error.message);
                }
                else {
                    // Successfully got the subject, display it.
                    console.write(‘The subject is: ‘ + asyncResult.value);
                }
            }
        );

        // Set the subject of the item that the user is composing.
        var today = new Date();
        // Customize the subject with today‘s date.
        var subject = ‘Summary for ‘ + today.toLocaleDateString();
        item.subject.setAsync(
            subject,
            { asyncContext: { var1: 1, var2: 2 } },
            function (asyncResult) {
                if (asyncResult.status == Office.AsyncResultStatus.Failed){
                    console.write(asyncResult.error.message);
                }
                else {
                    // Successfully set the subject.
                    // Do whatever appropriate for your scenario
                    // using the arguments var1 and var2 as applicable.
                }
            }
        );

    });// end $(document).ready
}

Office.js版本:此 Object 在 Office.js v1.1 中引入。

哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: ReadItem

官方文档:https://msdn.microsoft.com/en-us/library/office/dn482528.aspx

Office.context.mailbox.item.start/end

Time Object 表示邮件约会的开始或结束时间,Office.context.mailbox.item.start 和 Office.context.mailbox.item.end 均是这种类型的 Object。该对象仅仅适用于邮件会议或约会,因为只有会议才有开始或结束时间,因此只有 Appointment 才有 start 或 end 属性( Message 和 MeetingRequest 对象都没有这些属性)。

  • Compose 模式下:Office.context.mailbox.item.start/end 返回一个Time object,它提供了方法用来获取或设置会议起(或止)的时间:
方法(Method) 描述
getAsync Gets the value of a start or end time
setAsync Sets the value of a start or end time。 参数是一个表示 UTC 时间的 Date-Tme Object,可以利用 Mailbox.convertToUtcClientTime 获得相应的 UTC 时间
  • Read 模式下:Office.context.mailbox.item.start(或end)返回一个 JavaScript Date object,表示会议的起(或止)的时间。

代码示例:

Office.initialize = function () {
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        var item = Office.context.mailbox.item;

        // Get the start time of the item being composed.
        item.start.getAsync(
            function (asyncResult) {
                if (asyncResult.status == Office.AsyncResultStatus.Failed){
                    console.write(asyncResult.error.message);
                }
                else {
                    // Successfully got the start time, display it, first in UTC and
                    // then convert the Date object to local time and display that.
                    console.write (‘The start time in UTC is: ‘ + asyncResult.value.toString());
                    console.write (‘The start time in local time is: ‘ + asyncResult.value.toLocaleString());
                }
            }
        );

        // Set the start time of the item being composed.
        var startDate = new Date("September 27, 2012 12:30:00");
        item.start.setAsync(
            startDate,
            { asyncContext: { var1: 1, var2: 2 } },
            function (asyncResult) {
                if (asyncResult.status == Office.AsyncResultStatus.Failed){
                    console.write(asyncResult.error.message);
                }
                else {
                    // Successfully set the start time.
                    // Do whatever appropriate for your scenario
                    // using the arguments var1 and var2 as applicable.
                }
            }
        );

    });// end $(document).ready
}

Office.js版本:此 Object 在 Office.js v1.1 中引入。

哪些 Outlook 模式中可用: 撰写邮件会议或约会(Compose)、读邮件会议或约会(Read)

最低权限要求: ReadItem

官方文档:https://msdn.microsoft.com/en-us/library/office/dn482538.aspx

Office.context.mailbox.item.location

Location Object 表示邮件会议或约会中的地点,它提供了方法来获取并设置会议地址, 该对象仅仅适用于邮件会议或约会, 因为只有邮件会议, 也即 Appointment Object 才有这个属性。

  • Compose 模式下:Office.context.mailbox.item.location 返回一个 Location object,它提供了方法用来获取或设置会议的地址:
方法(Method) 描述
getAsync Gets the location of an appointment.
setAsync Sets the location of an appointment.
  • Read 模式下:Office.context.mailbox.item.location 返回一个表示会议地点的字符串。

代码示例:

Office.initialize = function () {
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        var item = Office.context.mailbox.item;

        // Get the location of the item that the user is composing.
        item.location.getAsync(
            function (asyncResult) {
                if (asyncResult.status == Office.AsyncResultStatus.Failed){
                    console.write(asyncResult.error.message);
                }
                else {
                    // Successfully got the location, display it.
                    console.write (‘The location is: ‘ + asyncResult.value);
                }
            }
        );

        // Set the location of the item that the user is composing.
        item.location.setAsync(
            ‘Conference room A‘,
            { asyncContext: { var1: 1, var2: 2 } },
            function (asyncResult) {
                if (asyncResult.status == Office.AsyncResultStatus.Failed){
                    console.write(asyncResult.error.message);
                }
                else {
                    // Successfully set the location.
                    // Do whatever appropriate for your scenario
                    // using the arguments var1 and var2 as applicable.
                }
            }
        );

    });// end $(document).ready
}

Office.js版本:此 Object 在 Office.js v1.1 中引入。

哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or Read)

最低权限要求: ReadItem

官方文档:https://msdn.microsoft.com/EN-US/library/office/dn482502.aspx

Recipients Object

Recipients Object提供了方法获取并设置邮件或约会的收件人。

  • 对于 Message Object (即邮件信息条目),它的如下三个属性均是 Recipients 类型的 Object。 Office.context.mailbox.item.to,Office.context.mailbox.item.cc,Office.context.mailbox.item.bcc
  • 对于 Appointment Object(即邮件约会条目),它的如下三个属性均是 Recipients 类型的 Object。 Office.context.mailbox.item.requiredAttendees, Office.context.mailbox.item.optionalAttendees, Office.context.mailbox.item.resources

Recipients Object 提供的方法有:

方法(Method) 描述
addAsync Adds recipients to the item.
getAsync Gets the recipients of an item.
setAsync Sets the recipients of an item.

代码示例:

Office.initialize = function () {
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        var item = Office.context.mailbox.item;

        // Get the email addresses of all the recipients of the composed item.
        // Local objects to point to recipients of either
        // the appointment or message that is being composed.
        // bccRecipients applies to only messages, not appointments.
        var toRecipients, ccRecipients, bccRecipients;
        // Verify if the composed item is an appointment or message.
        if (item.itemType == Office.MailboxEnums.ItemType.Appointment) {
            toRecipients = item.requiredAttendees;
            ccRecipients = item.optionalAttendees;
        }
        else { // For Message Object.
            toRecipients = item.to;
            ccRecipients = item.cc;
            bccRecipients = item.bcc;
        }

        // Use asynchronous method getAsync to get each type of recipients
        // of the composed item. Each time, this example passes an anonymous
        // callback function that doesn‘t take any parameters.
        toRecipients.getAsync(function (asyncResult) {
            if (asyncResult.status == Office.AsyncResultStatus.Failed){
                console.write(asyncResult.error.message);
            }
            else {
                // Async call to get to-recipients of the item completed.
                // Display the email addresses of the to-recipients.
                console.write (‘To-recipients of the item:‘);
            }
        }); // End getAsync for to-recipients.

        // Get any cc-recipients.
        ccRecipients.getAsync(function (asyncResult) {
            if (asyncResult.status == Office.AsyncResultStatus.Failed){
                console.write(asyncResult.error.message);
            }
            else {
                // Async call to get cc-recipients of the item completed.
                // Display the email addresses of the cc-recipients.
                console.write (‘Cc-recipients of the item:‘);
            }
        }); // End getAsync for cc-recipients.

        // If the item has the bcc field, i.e., item is message,
        // get any bcc-recipients.
        if (bccRecipients) {
            bccRecipients.getAsync(function (asyncResult) {
                if (asyncResult.status == Office.AsyncResultStatus.Failed){
                    console.write(asyncResult.error.message);
                }
            else {
                // Async call to get bcc-recipients of the item completed.
                // Display the email addresses of the bcc-recipients.
                console.write (‘Bcc-recipients of the item:‘);
            }
            }); // End getAsync for bcc-recipients.
        }

    });// end $(document).ready
}

Office.js版本:此 Object 在 Office.js v1.1。

哪些 Outlook 模式中可用: 撰写邮件(Compose)

最低权限要求: ReadItem

官方文档:https://msdn.microsoft.com/en-us/library/office/dn482517.aspx

Entities

Exchange Server 可以根据邮件内容检测出地理位置、邮箱地址、联系人信息、任务分配信息等, Entity 的识别依赖于自然语言的识别,而后者又要基于大量数据做机器学习才能做到,总的来说,entity的识别结果并不完全准确,识别的成功率很大程度上依赖于邮件中包含的特定语境信息。

我们可以利用 Office.context.mailbox.item.getEntities()/getEntitiesByType()/getFilteredEntitiesByName() 取出来这样一组信息集合,集合中包括如下几种类型的属性:


属性名


Outlook 模式


描述


从什么版本开始引入


addresses


读邮件(Read)


Exchange Server 2013 服务在邮件条目中检测到的一条或多条地理位置信息;如果不存在, 返回 null。


Version 1.0


contacts


读邮件(Read)


Exchange Server 2013 服务在邮件条目中检测到的一条或多条联系人信息;如果不存在, 返回 null。


Version 1.0


emailAddresses


读邮件(Read)


Exchange Server 2013 服务在邮件条目中检测到的一条或多条 SMTP 邮箱信息;如果不存在, 返回 null。


Version 1.0


meetingSuggestions


读邮件(Read)


Exchange Server 2013 服务在邮件条目中检测到的一条或多条“会议建议”信息;如果不存在, 返回 null。


Version 1.0


phoneNumbers


读邮件(Read)


Exchange Server 2013 服务在邮件条目中检测到的一条或多条电话号码;如果不存在, 返回 null。


Version 1.0


taskSuggestions


读邮件(Read)


Exchange Server 2013 服务在邮件条目中检测到的一条或多条“任务建议”;如果不存在, 返回 null。


Version 1.0


urls


读邮件(Read)


Exchange Server 2013 服务在邮件条目中检测到的一条或多条 Internet Urls;如果不存在, 返回 null。


Version 1.0

代码示例:

Office.context.mailbox.item.getEntities().taskSuggestions;

Office.context.mailbox.item.getEntitiesByType(EntityType.TaskSuggestion).taskSuggestions;

Office.context.mailbox.item.getEntities().emailAddresses;

Office.js版本:此 Object 在 Office.js v1.0 中引入。

哪些 Outlook 模式中可用: 读邮件 (ead)

最低权限要求: ReadItem 或 Restricted, 具体请查看每个 Entity 链接中的定义。

官方文档:https://msdn.microsoft.com/EN-US/library/office/fp160984.aspx

Office.context.mailbox.diagnostics

Diagnostics Object 提供用于 troubleshooting 的信息, Office.context.mailbox.diagnostics 的主要属性如下:


Property name


Outlook mode


Description


Introduced in


hostName


Compose or read


Gets a string that represents the name of the host application for the mail app.


Version 1.0


hostVersion


Compose or read


Gets a string that represents the version of either the host application or the Exchange Server.


Version 1.0


OWAView


Compose or read


Gets a string that represents the current view of Outlook Web App.


Version 1.0

代码示例:

Office.context.mailbox.diagnostics.hostName

Office.js版本:此 Object 在 Office.js v1.0 中引入。

哪些 Outlook 模式中可用: 撰写邮件、读邮件 (Compose or read)

最低权限要求: ReadItem

官方文档:https://msdn.microsoft.com/EN-US/library/office/jj715287.aspx

时间: 2024-07-28 14:03:14

JavaScript API for Office Outlook Add-in - “一页纸文档“的相关文章

微软office web apps 服务器搭建之在线文档预览(二)

上一篇文章已经介绍了整个安装过程了.只要在浏览器中输入文档转换server的ip,会自动跳转,出现如下页面. 那么就可以实现本地文档预览了,你可以试试.(注意:是本地哦,路径不要写错,类似“\\file\share”.如果不能预览,那么还要注意文档的权限哦,不多说.) 看到这个,就算完成80%以上的工作了,那么现在只需要集成到自己的项目中. 以下也主要是参考:http://www.cnblogs.com/poissonnotes/p/3277280.html 这篇文章也是超级经典.(上篇安装的也

微软office web apps 服务器搭建之在线文档预览(一)

office web apps安装 系统要求为Windows Server 2012, 注意:转换文档需要两台服务器,一台为转换server,另外一台为域控server.(至于为什么要两台,这个请自行google,微软是这样要求的,我也不懂) 公司的系统现在正是使用这个实现文档在线预览的,不久的将来一定会上线.后面的文章我会附上即将上线的文档转换服务的截图. 以前公司使用的再现预览方案是把文档转换成pdf文件,再然后转换成图片,实现预览.但是同步转换的时候总是出现问题,服务器内存消耗严重,apa

Office Add-in Model 为 Mail Add-in 提供的 JavaScript API 介绍

本文所讨论的 Mailbox API是指在 Mail Add-in 中可调用的 JavaScript API.开发者可以利用这些API 实现 Add-in 和 Outlook 的交互(数据读取与写入).希望大家通过这个简单的介绍,认识到 Office Add-In Model 为开发者提供了多大程度和邮件打交道的能力,如果碰巧有正准备开发 Mail Add-in 的同学, 不妨快速扫下 API 列表,然后衡量下它们能不能支撑你完成自己的 Scenarios. 开始之前,需要明确几个问题: 本文中

C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)

这篇博客将要讨论的是关于: 如何从C#的source以及注释, 生成一份Word格式的关于各个类,函数以及成员变量的说明文档. 他的大背景如下...... 最近的一个项目使用C#, 分N个模块, 在项目的里程碑的时候, 日本的总公司要检查我们的成果物. 成果物包括源代码, 概要设计式样书(SD,System Design), 详细设计式样书(PD, Program Design), 自动化测试等等. 源代码必须要符合编码规范(每个函数都要有注释, 方法变量的命名规则等...) 这些检查都很正常,

文档API生成神器SandCastle使用心得

一.功能描述 关于Sandcastle网上的参考资料相对较少,Google出来很多资料都是全英文的,相对于我这种英语渣渣看起来还是很费劲的. 言简意赅,Sandcastle主要功能是能够将C#类生成类似MSDN风格帮助文档的工具,支持本地化,并提供一个基本的命令行编译器界面和一个Visual Studio插件.优点: 1.生成简单,工作量小,几分钟之内就能完成一个项目的api文档制作. 2.自动生成索引项.内容项目表.主题块和页面布局,提高一致性和熟悉程度. 3.代码高亮,易读性强 4.生成ap

.NET Core使用swagger进行API接口文档管理

一.问题背景 随着技术的发展,现在的开发模式已经更多的转向了前后端分离的模式,在前后端开发的过程中,联系的方式也变成了API接口,但是目前项目中对于API的管理很多时候还是通过手工编写文档,每次的需求变更只要涉及到接口的变更,文档都需要进行额外的维护,如果有哪个小伙伴忘记维护,很多时候就会造成一连续的问题,那如何可以更方便的解决API的沟通问题?Swagger给我们提供了一个方式,由于目前主要我是投入在.NET Core项目的开发中,所以以.NET Core作为示例 二.什么是Swagger S

API的文档自动生成——基于CDIF的SOA基本能力

当前,作为大部分移动app和云服务后台之间的标准连接方式,REST API已经得到了绝大部分开发者的认可和广泛的应用.近年来,在新兴API经济模式逐渐兴起,许多厂商纷纷将自己的后台业务能力作为REST API开放出来,给更广泛的第三方开发者使用. 但是,管理REST API并非是一件容易的工作.由于缺乏有效的接口数据schema约束,加上设计REST API时resource endpoint的安排,以及发送http请求的方式又都五花八门,REST API开发完成后,大多数情况下API开发者仍然

[笔记&轮子]java源码 生成本地javadoc api文档

在用Eclipse写java代码时候,有时候因为不知道一个java函数的作用,会通过把鼠移动到java函数上,如果它有javadoc的相关内容就会显示出来.但是并非所有java代码都有javadoc:即使安装了javadoc,在eclipse中如果不进行设定,也可能无法使用. 我在win7下安装的是javase的jdk,发现eclipse中默认的javadoc路径是http://download.oracle.com/javase/7/docs/api/,显然这是一个在线资源,问题是网络总是不稳

Web Api 2 接口API文档美化

使用用第三方提供的swgger ui 帮助提高 web api 接口列表的阅读性,并且可以在页面中测试服务接口. 运行程序如下: 注意:在IE中必须输入红色部分. 并且可以对方法进行测试. 在开发web api 是可以写清楚注释,并且在文档中可以全部的显示出来. 在工程中处了安装Swashbuckle 以外,还会用到Owin,system.web.http.owin库 在WebApi项目工程中安装:Install-Package Swashbuckle ,安装成功能后,会在项目中的App_Sta