Я читаю файлы листов Google и объединяюсь с документами Google. В шаблоне есть таблицы, а в первой строке для замены текста - таблица. Следующая строка не имеет структуры таблицы, и я хотел бы добавить таблицу до тех пор, пока не останется больше записей.
Описание
- referral-doctor-data-new источник данных для слияния (помесячно-q) определен для копирования полей в документы Google
- accounting-Monthly-Statement шаблон Использование в качестве шаблона
<<variable>>
- ежемесячный отчет Объединенный документ
Обзор что в шаблоне определены поля для получения из листа 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 со ссылкой на введите ссылка здесь Я не смог решить проблему