Я создаю скрипт добавления API Google. Есть лист Google с множеством ссылок на документы Google. Я извлекаю эти ссылки, открываю файл, просматриваю его содержимое и добавляю его в новый документ. Это необходимо сделать для всех документов в этом списке. После недолгой борьбы я все это заработал, за исключением позиционированных изображений. Либо я вообще не получаю изображение, либо изображение копируется, но с этого момента копируется и вставляется на каждую страницу документа. Я, вероятно, просто терплю неудачу где-то в процессе кодирования, но не могу найти свой собственный недостаток. Обратите внимание, что я работаю в ИТ, но не в качестве разработчика, поэтому да, код написан очень плохо: '(
Я неоднократно пробовал и переиздавал свой код, чтобы убедиться, что правильно подбирал позиционированное изображение (например,вставка текста вместо изображения и т. д., и, кажется, что все работает должным образом, однако позиционированное изображение повторяется по всему документу.)
Обратите внимание, что ниже я включил только плохую функцию и основной код. я звоню, не все получают материал из листа Excel, так как он работает правильно.
ОБНОВЛЕНИЕ: я обновил свой код. Теперь он успешно находит, устанавливает макет и т. д. и размещает позиционированные изображения.
Однако с этого момента позиционированные изображения, которые были размещены ранее в объединенном документе, повторяются в последнем абзаце каждого добавленного документа.
function main() {
var spreadsheetid = "Fill_this_with_spreadsheet_ID";
var DocIDS = [];
DocIDS = getDocIDFromSpreadsheet(spreadsheetid);
mergeGoogleDocs(DocIDS);
//remove_blank(DocIDS);
}
/*Function to append contents of document to another document
for (var i = 1; i < List.length; ++i ) {
var otherBody = DocumentApp.openById(List[i]).getActiveSection();
var totalElements = otherBody.getNumChildren();
baseDoc.saveAndClose()
var baseDoc = DocumentApp.openById(DocIDS[0]);
var body = baseDoc.getActiveSection();
for( var j = 0; j < totalElements; ++j ) {
var element = otherBody.getChild(j).copy();
var type = element.getType();
if( type == DocumentApp.ElementType.PARAGRAPH ){
var positionedImages = element.getPositionedImages();
if ( positionedImages == "PositionedImage") {
//This is required because the positionedImage needs a "new" pragraph to anchor to...
var paragraph = body.appendParagraph("");
var tempvalue = positionedImages[0].getLayout();
var tempheight = positionedImages[0].getHeight();
var tempwidth = positionedImages[0].getWidth();
var tempblob = positionedImages[0].getBlob();
paragraph.addPositionedImage(tempblob);
var positionedImages2 = paragraph.getPositionedImages();
positionedImages2[0].setLayout(tempvalue);
positionedImages2[0].setLayout(tempvalue);
positionedImages2[0].setHeight(tempheight);
positionedImages2[0].setWidth(tempwidth);
//To-do, fix repeated multiplication of positioned Images on all following documents at the final paragraph.
}
else {
body.appendParagraph(element);
}
}
else if( type == DocumentApp.ElementType.TABLE ){
body.appendTable(element);}
else if( type == DocumentApp.ElementType.LIST_ITEM ) {
glyphType = element.getGlyphType();
body.appendListItem(element);
element.setGlyphType(glyphType);
}
else
throw new Error("Unknown element type: "+type);
}
body.appendPageBreak()
}
Я ожидаю объединения всех документовв один документ. Хотя он объединяет все, он работает неправильно на позиционированных изображениях. Когда я запускаю код, я получаюМаги дублируются на каждый новый добавленный документ после первой его вставки. Там, где его нужно включить только один раз, а не в каждый документ.
Я боролся уже несколько вечеров и отчаянно нуждался в указателях и / или правильном исправлении.