Excel.LinkedEntityDataDomainCollection class

表示对象的 LinkedEntityDataDomain 集合。 集合可以包含链接实体数据域,例如由服务提供商(如必应或 Power BI)定义的股票、地理位置或货币,或由 Office 加载项定义的链接实体数据域。

扩展

注解

API 集:ExcelApi 1.19

Excel Web 版不支持此类。

使用方

示例

// Registers linked entity data domains when the add-in loads.
await Excel.run(async (context) => {
    const productsDomainOptions: Excel.LinkedEntityDataDomainCreateOptions = {
        dataProvider: "Contoso",
        id: "products",
        name: "Products",
        // ID of the custom function called by Excel to resolve or refresh linked entity cell values.
        loadFunctionId: "CONTOSOLOADSERVICE",
        // periodicRefreshInterval is only required when supportedRefreshModes contains "Periodic".
        periodicRefreshInterval: 300,
        // Manual refresh mode is always supported, even if unspecified.
        supportedRefreshModes: [
            Excel.LinkedEntityDataDomainRefreshMode.periodic,
            Excel.LinkedEntityDataDomainRefreshMode.onLoad
        ]
    };

    // Add the data domain to the collection to register it.
    const domains: Excel.LinkedEntityDataDomainCollection = context.workbook.linkedEntityDataDomains;
    domains.add(productsDomainOptions);
    await context.sync();
});

属性

context

与对象关联的请求上下文。 这将加载项的进程连接到 Office 主机应用程序的进程。

items

获取此集合中已加载的子项。

方法

add(options)

向集合添加由 Office 加载项定义的链接实体数据域对象。 添加链接实体数据域后,它可用于创建 LinkedEntityCellValue 对象。

getCount()

获取集合中链接的实体数据域的数量。

getItem(id)

通过其 id获取链接实体数据域。

getItemAt(index)

按其在集合中的索引获取链接实体数据域。

getItemByName(name)

通过其 name获取链接实体数据域。

getItemByNameOrNullObject(name)

通过其 name获取链接实体数据域。 如果链接的实体数据域不存在,则此方法将返回其 isNullObject 属性设置为 true的对象。 有关详细信息,请参阅 *OrNullObject 方法和属性

getItemOrNullObject(id)

通过其 id获取链接实体数据域。 如果链接的实体数据域不存在,则此方法将返回其 isNullObject 属性设置为 true的对象。 有关详细信息,请参阅 *OrNullObject 方法和属性

load(options)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNames)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNamesAndPaths)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

loadLinkedEntityCellValue(id)

提交请求以使用 LinkedEntityCellValue 指定的 LinkedEntityId. 如果找到, LinkedEntityCellValue 则将通过事件返回 LinkedEntityCellValueLoaded 对象。

refreshAll()

刷新 LinkedEntityCellValue 此集合中所有链接实体数据域的所有对象。 如果数据提供程序繁忙或暂时无法访问,刷新请求可能会失败。

toJSON()

覆盖 JavaScript toJSON() 方法,以便在将 API 对象传递给 JSON.stringify()时提供更有用的输出。 (JSON.stringify反过来调用 toJSON 传递给它的对象的方法。) 虽然原始 Excel.LinkedEntityDataDomainCollection 对象是 API 对象,但该 toJSON 方法返回一个纯 JavaScript 对象, (类型为 Excel.Interfaces.LinkedEntityDataDomainCollectionData) ,其中包含一个“items”数组,其中包含从集合的 items 中加载的任何属性的浅层副本。

活动

onLinkedEntityCellValueLoaded

当加载 LinkedEntityCellValue 请求完成时发生。

onLinkedEntityDataDomainAdded

在将新的链接实体数据域添加到工作簿时发生。

onRefreshCompleted

当刷新链接实体数据域的对象的 LinkedEntityCellValue 请求完成时发生。

onRefreshModeChanged

当链接实体数据域的更改 refreshMode 时发生。

属性详细信息

context

与对象关联的请求上下文。 这将加载项的进程连接到 Office 主机应用程序的进程。

context: RequestContext;

属性值

items

获取此集合中已加载的子项。

readonly items: Excel.LinkedEntityDataDomain[];

属性值

方法详细信息

add(options)

向集合添加由 Office 加载项定义的链接实体数据域对象。 添加链接实体数据域后,它可用于创建 LinkedEntityCellValue 对象。

add(options: Excel.LinkedEntityDataDomainCreateOptions): void;

参数

options
Excel.LinkedEntityDataDomainCreateOptions

用于创建要添加的链接实体数据域的选项。

返回

void

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

示例

// Registers linked entity data domains when the add-in loads.
await Excel.run(async (context) => {
    const productsDomainOptions: Excel.LinkedEntityDataDomainCreateOptions = {
        dataProvider: "Contoso",
        id: "products",
        name: "Products",
        // ID of the custom function called by Excel to resolve or refresh linked entity cell values.
        loadFunctionId: "CONTOSOLOADSERVICE",
        // periodicRefreshInterval is only required when supportedRefreshModes contains "Periodic".
        periodicRefreshInterval: 300,
        // Manual refresh mode is always supported, even if unspecified.
        supportedRefreshModes: [
            Excel.LinkedEntityDataDomainRefreshMode.periodic,
            Excel.LinkedEntityDataDomainRefreshMode.onLoad
        ]
    };

    // Add the data domain to the collection to register it.
    context.workbook.linkedEntityDataDomains.add(productsDomainOptions);
    await context.sync();
});

getCount()

获取集合中链接的实体数据域的数量。

getCount(): OfficeExtension.ClientResult<number>;

返回

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

getItem(id)

通过其 id获取链接实体数据域。

getItem(id: string): Excel.LinkedEntityDataDomain;

参数

id

string

要检索的LinkedEntityDataDomain对象的 IDid

返回

具有给定 id. 如果有多个链接实体数据域具有相同的 id,则将返回由此 Office 加载项定义的域。

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

示例

// Refreshes all linked entity cell values for a specific data domain.
await Excel.run(async (context) => {
    const dataDomains: Excel.LinkedEntityDataDomainCollection = context.workbook.linkedEntityDataDomains;

    // Get a specific data domain by ID and refresh it.
    const productsDomain: Excel.LinkedEntityDataDomain = dataDomains.getItem("products");
    productsDomain.refresh();
    await context.sync();
});

getItemAt(index)

按其在集合中的索引获取链接实体数据域。

getItemAt(index: number): Excel.LinkedEntityDataDomain;

参数

index

number

集合中链接实体数据域的索引。

返回

给定索引处的链接实体数据域。

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

getItemByName(name)

通过其 name获取链接实体数据域。

getItemByName(name: string): Excel.LinkedEntityDataDomain;

参数

name

string

要检索的LinkedEntityDataDomain对象的 IDname

返回

具有给定 name. 如果有多个链接实体数据域具有相同的 name,则将返回由此 Office 加载项定义的域。

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

getItemByNameOrNullObject(name)

通过其 name获取链接实体数据域。 如果链接的实体数据域不存在,则此方法将返回其 isNullObject 属性设置为 true的对象。 有关详细信息,请参阅 *OrNullObject 方法和属性

getItemByNameOrNullObject(name: string): Excel.LinkedEntityDataDomain;

参数

name

string

要检索的LinkedEntityDataDomain对象的 IDname

返回

具有给定 name. 如果有多个链接实体数据域具有相同的 name,则将返回由此 Office 加载项定义的域。

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

getItemOrNullObject(id)

通过其 id获取链接实体数据域。 如果链接的实体数据域不存在,则此方法将返回其 isNullObject 属性设置为 true的对象。 有关详细信息,请参阅 *OrNullObject 方法和属性

getItemOrNullObject(id: string): Excel.LinkedEntityDataDomain;

参数

id

string

要检索的LinkedEntityDataDomain对象的 IDid

返回

具有给定 id. 如果有多个链接实体数据域具有相同的 id,则将返回由此 Office 加载项定义的域。

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

load(options)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(options?: Excel.Interfaces.LinkedEntityDataDomainCollectionLoadOptions & Excel.Interfaces.CollectionLoadOptions): Excel.LinkedEntityDataDomainCollection;

参数

返回

load(propertyNames)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNames?: string | string[]): Excel.LinkedEntityDataDomainCollection;

参数

propertyNames

string | string[]

指定要加载的属性的逗号分隔的字符串或字符串数组。

返回

load(propertyNamesAndPaths)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNamesAndPaths?: OfficeExtension.LoadOption): Excel.LinkedEntityDataDomainCollection;

参数

propertyNamesAndPaths
OfficeExtension.LoadOption

propertyNamesAndPaths.select 是指定要加载的属性的逗号分隔字符串,以及 propertyNamesAndPaths.expand 指定要加载的导航属性的逗号分隔字符串。

返回

loadLinkedEntityCellValue(id)

提交请求以使用 LinkedEntityCellValue 指定的 LinkedEntityId. 如果找到, LinkedEntityCellValue 则将通过事件返回 LinkedEntityCellValueLoaded 对象。

loadLinkedEntityCellValue(id: LinkedEntityId): void;

参数

id
Excel.LinkedEntityId

特定的 LinkedEntityId

返回

void

注解

API 集:ExcelApi 1.21

示例

// Loads the linked entity cell value for the specified domain and entity IDs.
async function loadLinkedEntity(domainId: string, entityId: string ) {
    await Excel.run(async (context) => {
        // Specify the linked entity ID to load.
        const linkedEntityId: Excel.LinkedEntityId = {
            entityId: entityId,
            domainId: domainId,
            serviceId: 268436224, // Service ID used by Excel to identify linked entity cell values associated with an add-in.
            culture: "en-US",
        };

        // Load the linked entity cell value.
        context.workbook.linkedEntityDataDomains.loadLinkedEntityCellValue(linkedEntityId);
        await context.sync();

        // The onLinkedEntityCellValueLoaded event occurs once the linked entity cell value is loaded.
    });
}

refreshAll()

刷新 LinkedEntityCellValue 此集合中所有链接实体数据域的所有对象。 如果数据提供程序繁忙或暂时无法访问,刷新请求可能会失败。

refreshAll(): void;

返回

void

注解

API 集:ExcelApi 1.19

Excel web 版不支持此方法。

示例

// Refreshes all linked entity cell values across all data domains.
await Excel.run(async (context) => {
    const dataDomains: Excel.LinkedEntityDataDomainCollection = context.workbook.linkedEntityDataDomains;

    // Refresh all linked entity cell values in all data domains.
    dataDomains.refreshAll();
    await context.sync();
});

toJSON()

覆盖 JavaScript toJSON() 方法,以便在将 API 对象传递给 JSON.stringify()时提供更有用的输出。 (JSON.stringify反过来调用 toJSON 传递给它的对象的方法。) 虽然原始 Excel.LinkedEntityDataDomainCollection 对象是 API 对象,但该 toJSON 方法返回一个纯 JavaScript 对象, (类型为 Excel.Interfaces.LinkedEntityDataDomainCollectionData) ,其中包含一个“items”数组,其中包含从集合的 items 中加载的任何属性的浅层副本。

toJSON(): Excel.Interfaces.LinkedEntityDataDomainCollectionData;

返回

事件详细信息

onLinkedEntityCellValueLoaded

当加载 LinkedEntityCellValue 请求完成时发生。

readonly onLinkedEntityCellValueLoaded: OfficeExtension.EventHandlers<Excel.LinkedEntityCellValueLoadedEventArgs>;

事件类型

注解

API 集:ExcelApi 1.21

Excel Web 版不支持此事件。

示例

// Registers an event handler for the onLinkedEntityCellValueLoaded event.
async function registerEvent() {
    await Excel.run(async (context) => {
        const linkedEntityDataDomains: Excel.LinkedEntityDataDomainCollection = context.workbook.linkedEntityDataDomains;
        linkedEntityDataDomains.onLinkedEntityCellValueLoaded.add(handleLoadedLinkedEntity);

        await context.sync();
        console.log("Event handler registered successfully. You''ll be notified when linked entities are loaded.");
    });
}

// Handles the onLinkedEntityCellValueLoaded event that occurs when a linked entity cell value is loaded.
async function handleLoadedLinkedEntity(event: Excel.LinkedEntityCellValueLoadedEventArgs) {
    await Excel.run(async (context) => {
        console.log(`The ${event.type} event occurred from a ${event.source} source.`);
        console.log(`The linked entity cell value with ID ${event.id} is loaded.`);
        const loadedLinkedEntityCellValue: Excel.LinkedEntityCellValue = event.linkedEntityCellValue;
        console.log(`Loaded linked entity cell value: ${loadedLinkedEntityCellValue}`);

        // Queue operations on the loaded entity value here.

        await context.sync();
    });
}

onLinkedEntityDataDomainAdded

在将新的链接实体数据域添加到工作簿时发生。

readonly onLinkedEntityDataDomainAdded: OfficeExtension.EventHandlers<Excel.LinkedEntityDataDomainAddedEventArgs>;

事件类型

注解

API 集:ExcelApi 1.19

Excel Web 版不支持此事件。

示例

// Registers an event handler for the onLinkedEntityDataDomainAdded event.
await Excel.run(async (context) => {
    const dataDomains: Excel.LinkedEntityDataDomainCollection = context.workbook.linkedEntityDataDomains;
    dataDomains.onLinkedEntityDataDomainAdded.add(onDataDomainAdded);

    await context.sync();
});

async function onDataDomainAdded(eventArgs: Excel.LinkedEntityDataDomainAddedEventArgs): Promise<void> {
    console.log(`Linked entity data domain added: ${eventArgs.id}`);
    console.log(`Event type: ${eventArgs.type}`);
    console.log(`Event source: ${eventArgs.source}`);
    console.log(`Service ID: ${eventArgs.serviceId}`);
}

onRefreshCompleted

当刷新链接实体数据域的对象的 LinkedEntityCellValue 请求完成时发生。

readonly onRefreshCompleted: OfficeExtension.EventHandlers<Excel.LinkedEntityDataDomainRefreshCompletedEventArgs>;

事件类型

注解

API 集:ExcelApi 1.19

Excel Web 版不支持此事件。

示例

// Registers an event handler for the onRefreshCompleted event.
await Excel.run(async (context) => {
    const dataDomains: Excel.LinkedEntityDataDomainCollection = context.workbook.linkedEntityDataDomains;
    dataDomains.onRefreshCompleted.add(onLinkedEntityDomainRefreshed);

    await context.sync();
});

async function onLinkedEntityDomainRefreshed(eventArgs: Excel.LinkedEntityDataDomainRefreshCompletedEventArgs): Promise<void> {
    console.log(`Linked entity domain refreshed: ${eventArgs.id}`);
    console.log(`Event type: ${eventArgs.type}`);
    console.log(`Event source: ${eventArgs.source}`);
    console.log(`Service ID: ${eventArgs.serviceId}`);
    console.log(`Refresh status: ${eventArgs.refreshed}`);
    console.log(`Refresh errors: ${eventArgs.errors}`);
}

onRefreshModeChanged

当链接实体数据域的更改 refreshMode 时发生。

readonly onRefreshModeChanged: OfficeExtension.EventHandlers<Excel.LinkedEntityDataDomainRefreshModeChangedEventArgs>;

事件类型

注解

API 集:ExcelApi 1.19

Excel Web 版不支持此事件。

示例

// Registers an event handler for the onRefreshModeChanged event.
await Excel.run(async (context) => {
    const dataDomains: Excel.LinkedEntityDataDomainCollection = context.workbook.linkedEntityDataDomains;
    dataDomains.onRefreshModeChanged.add(onRefreshModeChanged);

    await context.sync();
});

async function onRefreshModeChanged(eventArgs: Excel.LinkedEntityDataDomainRefreshModeChangedEventArgs): Promise<void> {
    console.log(`Linked entity domain refresh mode changed: ${eventArgs.id}`);
    console.log(`Event type: ${eventArgs.type}`);
    console.log(`Event source: ${eventArgs.source}`);
    console.log(`Service ID: ${eventArgs.serviceId}`);
    console.log(`New refresh mode: ${eventArgs.refreshMode}`);
}