скрипт приложения Google Drive, размещающие изображения, дублирующие последнюю страницу каждого документа при объединении документов - PullRequest
3 голосов
/ 10 октября 2019

Я создаю скрипт добавления 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()

  }

Я ожидаю объединения всех документовв один документ. Хотя он объединяет все, он работает неправильно на позиционированных изображениях. Когда я запускаю код, я получаюМаги дублируются на каждый новый добавленный документ после первой его вставки. Там, где его нужно включить только один раз, а не в каждый документ.

Я боролся уже несколько вечеров и отчаянно нуждался в указателях и / или правильном исправлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...