google-apps-script - 元素必须分离
问题描述
我正在阅读 Google 表格文件并合并到 Google 文档中。
模板有一个表格,替换文本的第一行有一个表格。下一行没有表结构,我想追加表直到没有更多记录。
描述
- refer-doctor-data-new 要合并的数据源(每月-q)工作表被定义为将字段复制到谷歌文档
- accounting-monthly-statement-template
用作模板
<<variable>>
- monthly-statement 合并后的文档
概述是模板定义了要从推荐医生数据新谷歌表中获取的字段。每月 q 工作表是最终合并文档的格式。我想获取推荐医生在 Google Doc 组中显示的所有详细交易。完成所有必需的计算和查询
问题:
- 可以合并一个数据但不能合并多行数据
- 我无法在谷歌文档中附加表格的第二行(我需要帮助)看到错误元素必须分离.....
- 合并过程似乎无限运行(我会弄清楚)
将 Goolge Sheet 的文件合并到 Goolge Doc 的示例文件
请告知如何与元素分离。
这些行有错误
// 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 的数据列表参考在 此处输入链接描述 我无法解决问题
解决方案
推荐阅读
- java - “QuantumRenderer-” 0 用于 JavaFX 字体
- sql-server - IS NOT NULL AS ... - 将查询从 MySQL 转换为 MS-SQL
- sqlite - 如何每小时查询 SQLite 数据?
- python-3.x - 使用 Tabulate 在 Python 中打印 empji 时正确设置列宽
- google-cloud-platform - 如何启用 GCP 服务,我得到一个 PERMISSION_DENIED
- java - 使用 ArrayList 的 `get` 方法的错误答案
- java - 从 Spring-Boot 2.2.2 t Spring-Boot 2.3.7 迁移时创建名为“tomcatServletWebServerFactory”的 bean 时出错
- excel - 从两个单词之间提取文本
- python - 如何减小 Dash DataTable 的宽度
- javascript - 有没有办法计算 div 中的行数并获取前几行的 textContent-Javascript