Элемент должен быть отсоединен. Google скрипт - PullRequest
0 голосов
/ 06 февраля 2020

Я читаю файлы листов Google и объединяюсь с документами Google. В шаблоне есть таблицы, а в первой строке для замены текста - таблица. Следующая строка не имеет структуры таблицы, и я хотел бы добавить таблицу до тех пор, пока не останется больше записей.

Описание

  1. referral-doctor-data-new источник данных для слияния (помесячно-q) определен для копирования полей в документы Google
  2. accounting-Monthly-Statement шаблон Использование в качестве шаблона <<variable>>
  3. ежемесячный отчет Объединенный документ

Обзор что в шаблоне определены поля для получения из листа google referral-doctor-data-new. Рабочий лист month-q - это формат окончательного объединенного документа. Я хотел бы получить все подробные транзакции, отображаемые в группе Google Do c реферальным врачом. Все необходимые вычисления и запросы выполняются

Проблема:

  • Можно объединить одни данные, но не несколько строк данных
  • Я не смог добавьте вторую строку таблицы в документе Google (мне нужна помощь по этому вопросу), см. элемент error должен быть отсоединен .....
  • Кажется, есть неограниченные прогоны процесса слияния (я разберусь с этим )

Образцы файлов Объединение файлов для Goolge Sheet с Goolge Do c

Посоветуйте, пожалуйста, как отсоединиться от элемента.

В этих строках есть ошибка

  // if second row of data
       body.appendTable(element).appendTableRow()
       .appendTableCell("EXAMDATE")
          .appendTableCell("VISITNO")
          .appendTableCell("PATNAME")
          .appendTableCell("PROC NAME")
          .appendTableCell("NET");


Полный код

 ///end of mail merge
  function copy() {
    var docid=""  //merge template
var docfinalid="";//merge final doc
var sheetid="";   //raw sheet
var ss=SpreadsheetApp.openById(sheetid).getSheetByName("monthly-q"); 
 //var data=ss.getRange("B11:T").getValues(); // from raw table
var data=ss.getRange("A3:G").getValues(); // from monthly-q table  
var refdoc=ss.getRange("J:J").getValues() ;//get ref doc list, unique
    for (var i=0;i<refdoc.length;i++ ){
       var formula="=QUERY(raw!B10:T,\"Select C,D,H,L,M,T where M='"+refdoc[i]+"'\")";
       var qformula=ss.getRange("A2").setFormula(formula);
       data.length=0;
       data=ss.getRange("A3:G").getValues();


         data.forEach(function(r){
            var inv=ss.getRange("B1").getValue();//self-define invoice code
       merge(inv,"31-01-2020",r[4],"TEMPADD",r[0],r[1],r[2],r[3],r[5],r[6]);
            inv=inv+1;

   });
         }



  }// end of copy function 

  function merge(inv,date,drname,add,examdate,visitno,patname,procname,net,total) {
      var docid=""  //merge template
var docfinalid="";//merge final doc
var sheetid="";   //raw sheet
var ss=SpreadsheetApp.openById(sheetid).getSheetByName("raw"); 
    var doc=DocumentApp.openById(docid);
  var sourceDoc = doc.getBody();

  var targetDoc = DocumentApp.openById(docfinalid);
  var totalElements = sourceDoc.getNumChildren();
    targetDoc.getBody().appendPageBreak();
   //get Yr from date
    //get Month from date

  for( var j = 0; j < totalElements; ++j ) {
    var body = targetDoc.getBody();
    var element = sourceDoc.getChild(j).copy();
    var type = element.getType();

    if( type == DocumentApp.ElementType.PARAGRAPH ){
      body.appendParagraph(element).replaceText("<<inv>>", inv)
                                      .replaceText("<<Date>>", date)
                                      .replaceText("<<Dr Name>>", drname)
                                      .replaceText("<<Address>>", add);


    }
    else if( type == DocumentApp.ElementType.TABLE){
      body.appendTable(element).replaceText("<<Exam Date>>", examdate)
                                      .replaceText("<<Visit No>>", visitno)
                                      .replaceText("<<Patient Name>>", patname)
                                      .replaceText("<<Procedure Name>>", procname)
                                      .replaceText("<<Net Amount>>", net)
                                      .replaceText("<<Total>>", total);
      //second row of data

        var test=element.getParent();
 debugger;

     // if second row of data
       body.appendTable(element).appendTableRow()
       .appendTableCell("EXAMDATE")
          .appendTableCell("VISITNO")
          .appendTableCell("PATNAME")
          .appendTableCell("PROC NAME")
          .appendTableCell("NET");






      }else if( type == DocumentApp.ElementType.LIST_ITEM){
      body.appendListItem(element);
      }
//    ...add other conditions (headers, footers...
    inv++;
    }
  targetDoc.saveAndClose();

}

У меня есть список данных из GoogleSheet Merge в Google Doc со ссылкой на введите ссылка здесь Я не смог решить проблему

Google Sheet with rows of data Merged Google Doc

Element need to be detached

...