【问题标题】:how to show List inside a table using App script如何使用 App 脚本在表格中显示列表
【发布时间】:2021-06-15 17:33:07
【问题描述】:

我在表格中的列表有问题 我正在使用 getSelection() 方法选择表格

我正在尝试将我选择的所有内容插入到一个新的 doc 文件中

我正在选择包含图片的表格,列出段落。

它工作正常,但唯一的问题是没有显示列表样式(子弹,正方形)。 并且还可以在表格内显示图像 段落和文本工作正常

什么可以帮助我,以便我可以渲染我选择的所有内容

function copySelectionToNewDoc(selection, targetDoc) {
  var body = targetDoc.getBody();
  var fg=0;
  selection.getRangeElements()
    .map(function (element) { return element.getElement() })
    .forEach(function (element) {
      var type = element.getType();
        // Logger.log(type);
        // Logger.log(element.getAttributes());
        // Logger.log(element.getParent().getAttributes());
      if (type == DocumentApp.ElementType.PARAGRAPH) {
        var check=element.copy();
        Logger.log(check);
        body.appendParagraph(element.copy());
        Logger.log("i am paragraph");
      }
      else if (type == DocumentApp.ElementType.TEXT) {
        var txt=element.getParent();
        Logger.log(txt);
        body.appendParagraph(txt.copy());
        Logger.log("i am text");
        Logger.log(txt.getText());
        // var text = body.editAsText();
        // Logger.log(text);
        // text.appendText(txt.getText());
        // Logger.log(text.getParent());
      }
      else if (type == DocumentApp.ElementType.TABLE) {
        var dstTable = body.appendTable(element.copy());
        var srcTable = element.copy().asTable();
        Logger.log("i am table");
      }
      else if (type == DocumentApp.ElementType.LIST_ITEM) {
        var txtGlyphType = element.getGlyphType();
        body.appendListItem(element.copy()).setGlyphType(txtGlyphType);
        console.log(body);
        console.log("i am item");
      }
      else if(type==DocumentApp.ElementType.TABLE_CELL&&fg==0){
        Logger.log("i am table cell");
        var tt=element.getParentTable();
        var ele=tt.copy();
        Logger.log(tt.getType());
        var dstTable = body.appendTable(ele);
        var srcTable = tt.asTable();
        fg=1;
      }
      else if (type == DocumentApp.ElementType.TABLE_ROW&&fg==0) {
        var tt=element.getParentTable();
        var ele=tt.copy();
        Logger.log(tt.getType());
        var dstTable = body.appendTable(ele);
        var srcTable = tt.asTable();
        fg=1;
        Logger.log("i am table row");
      }
      else if(type==DocumentApp.ElementType.INLINE_IMAGE){
        var img=element.getParent();
        body.appendParagraph(img.copy());
        Logger.log("i am inline image");
      }
    });
  targetDoc.saveAndClose();
}

【问题讨论】:

    标签: javascript function web google-apps-script


    【解决方案1】:
    function createAndLoadTable() {
      const vs = SpreadsheetApp.getActiveRange().getValues();
      const doc = DocumentApp.openById('docid');
      let body = doc.getBody();
      body.appendTable(vs);
      doc.saveAndClose();
    }
    

    我的活动范围数据:

    COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9
    8 17 4 8 0 1 16 11 0
    14 7 9 1 16 8 1 4 4
    18 15 7 14 16 0 3 19 5
    9 10 19 17 13 2 14 12 5
    12 16 5 18 13 6 16 12 16
    8 12 9 17 14 7 10 12 18
    14 0 5 5 2 0 15 5 2
    7 1 3 18 14 6 15 16 2
    14 4 7 2 11 19 18 17 1

    文档:

    【讨论】:

    • 感谢您的回复,但这工作正常,您可以在表格内插入表格,在表格内的表格列表项内插入图像并将其作为文档返回,这就是我正在寻找的。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多