как отобразить список внутри таблицы с помощью скрипта приложения

#javascript #function #web #google-apps-script

Вопрос:

У меня возникли проблемы со списком внутри таблицы, я выбираю таблицу с помощью метода 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_CELLamp;amp;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_ROWamp;amp;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();
}
 

Ответ №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

Документ:

введите описание изображения здесь

Комментарии:

1. спасибо за ваш ответ, но это работает нормально, можете ли вы вставить таблицу внутри таблицы и изображение внутри таблицы, список внутри таблицы и вернуть его в качестве документа, это то, что я ищу. Еще раз спасибо