将Google文档中的InlineImage转换为HTML图像

时间:2015-04-07 00:35:24

标签: google-apps-script

我正在处理Google文档插件,我需要从Google文档文档中获取InlineImage并将其转换为HTML图像。

我最初的策略是从InlineImage获取数据并将其转换为data URI,但我已经了解到应用脚本不支持此功能。有人知道我应该做什么吗?

1 个答案:

答案 0 :(得分:0)

您是Caja模板系统doesn't support data URIs的正确方法,但您可以通过切换侧边栏来改为使用IFRAME sandbox mode来解决此问题。由于IFRAME模式不使用Caja,因此不受相同限制,但有一点需要注意:它与旧浏览器不兼容。但是,如果您需要使用数据URI,那么您将没有太多其他选择。

这是一个示例脚本,它将使用数据URI获取所选图像并将其显示在附加组件侧边栏中。

Code.gs:

function getImage() {
  var els = DocumentApp.getActiveDocument().getSelection().getRangeElements();
  var el;

  for (var i = 0; i < els.length; i++) {
    el = els[i].getElement();

    if (el.getType() === DocumentApp.ElementType.INLINE_IMAGE) {
      return el;
    }
  }

  return null;
}

function showSidebar() {
  var mimetype = 'image/png';
  var blob = getImage().getAs(mimetype);
  var uri = 'data:' + mimetype + ';base64,' + Utilities.base64Encode(blob.getBytes());

  var sidebar = HtmlService.createTemplateFromFile('Sidebar');
  sidebar.data = uri;

  DocumentApp.getUi().showSidebar(
    sidebar
      .evaluate()
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  );
}

Sidebar.html:

<img src="<?!= data ?>" />