全部产品

注意事项

注意事项

销毁对象

由于 iframe 的跨域安全限制,没办法直接调用 iframe 内部的函数和变量。

js-sdk 提供的高级 API 对象,只是对 iframe 内部的映射,它是通过 postMessage 进行通信的,所以部分对象需要手动销毁。

const app = instance.ExcelApplication();

// 例如表格获取 WorkSheet 对象
const sheet = instance.Sheets.Item('sheet1');

// 此时得到的 sheet 对象只是一个映射对象
// 它拥有 iframe 内部对象的所有属性和方法
// 该对象的所有属性和方法都会映射到 iframe 内部
sheet.Activate(); // 切换 sheet

// ...do something

// 不需要改对象时,可以手动销毁
// 此时会通知 iframe 内部销毁对应对象
sheet.Destroy();

批量释放对象

由于单个对象销毁比较麻烦,所以 js-sdk 还提供了接口可以按照区间销毁,进而达到批量释放:

const stack = app.Stack();

// ...do something

stack.End(); // 在 stack 区间的对象都会被销毁

关系图

接入方页面和文档在线编辑的关系如下:

关系图

接入方通过加载 js-sdk 生成的 iframe,将在线文档页面在网页中展示出来。

调用规则

和 VBA 的规则一样,文档在线预览编辑服务也给非编程人员的使用提供方便。

所以在涉及索引调用的时候,尽可能从 1 开始(而不是从编程人员的 0 开始)。

以 Word(文字)中的表格为例,假如我们要删除文档中的第 1 个表格:

const instance = aliyun.config({
  url: 'url 地址',
});

async function example() {
  await instance.ready();

  const app = instance.Application;

  // 获取所有表格
  const tables = app.ActiveDocument.ActiveWindow.Selection.Tables;

  // 获取第 1 个表格
  const tableOne = await tables.Item(1);

  // 删除第 1 个表格
  await tableOne.Delete();
}