You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Office JS的PowerPoint插件如何获取当前选中的形状

PowerPoint JS插件获取当前选中形状的解决方案

可以直接使用Office.js专为PowerPoint提供的getSelectedShapes()API实现需求,该API属于PowerPointApi 1.5及以上要求集,不需要依赖getSelectedDataAsync()方法。

实现步骤

  1. 首先在插件的manifest文件中确认已声明支持PowerPointApi 1.5及以上版本的要求集,避免API调用报错。
  2. 参考以下示例代码调用API:
async function getCurrentSelectedShape() {
  await PowerPoint.run(async (context) => {
    // 获取当前选中的所有形状集合
    const selectedShapes = context.presentation.getSelectedShapes();
    // 加载形状的必要属性,可根据业务需求扩展需要加载的字段
    selectedShapes.load("items/id, items/name, items/type");
    await context.sync();

    if (selectedShapes.items.length === 0) {
      console.log("当前未选中任何形状");
      return;
    }

    // 集合最后一项即为用户最后选中的形状,也就是按DEL键会被删除的目标形状
    const targetShape = selectedShapes.items.at(-1);
    console.log("当前激活的选中形状信息:", {
      id: targetShape.id,
      名称: targetShape.name,
      类型: targetShape.type
    });

    // 拿到目标形状后可直接进行后续操作,例如修改填充色
    // targetShape.fill.setSolidColor("#2563eb");
    // await context.sync();
  });
}

兼容低版本要求集的替代方案

如果你的插件需要兼容PowerPointApi 1.5以下的运行环境,可以使用旧版通用API实现:

  • 调用Office.context.document.getSelectedDataAsync(Office.CoercionType.Text),当选中目标为形状时,返回结果中会包含选中形状的ID列表
  • 拿到ID后遍历当前幻灯片的所有形状,匹配ID即可找到目标形状

该方案兼容性更强,但代码复杂度更高,能获取的形状初始信息更少,优先推荐使用新API。

内容的提问来源于stack exchange,提问作者Jack Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:39:02