#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. спасибо за ваш ответ, но это работает нормально, можете ли вы вставить таблицу внутри таблицы и изображение внутри таблицы, список внутри таблицы и вернуть его в качестве документа, это то, что я ищу. Еще раз спасибо