【发布时间】:2014-11-19 20:40:49
【问题描述】:
我在电子表格中有一个脚本,用于接收来自表单的响应。使用这些响应和模板 Google 文档,我从模板创建一个新文档,然后用适当的数据替换占位符(例如“##CLIENT##”)。效果很好。然后我尝试在同一个文件夹中创建一个 PDF 副本。问题是 PDF 是原始模板,没有替换占位符......
我尝试添加一个中断来让文档更新:Utilities.sleep(15000); 这没有帮助。我想我不明白文档是如何在我的函数之间传递的?
全局变量
var SOURCE_TEMPLATE = "{Document ID Here}";
var TARGET_FOLDER = "{Folder ID Here}";
代码:
//Get headers from spreadsheet and create a sorted array
var s = SpreadsheetApp.getActiveSheet();
var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];
// The variable e holds all the form values in an array.
// Assign values for each submission
if (e && e.namedValues){
var array_fields =[];
var project_manager = e.namedValues[headers[1]].toString();
var client = e.namedValues[headers[2]].toString();
var client_number = e.namedValues[headers[3]].toString();
var project_title = e.namedValues[headers[4]].toString();
var project_number = e.namedValues[headers[5]].toString();
var project_engineer = e.namedValues[headers[6]].toString();
var job_type = e.namedValues[headers[7]].toString();
var completion_date = e.namedValues[headers[14]].toString();
var project_cost = e.namedValues[headers[15]].toString();
var time = get_time();
array_fields.push(project_manager,client,client_number,project_title,pad(project_number),project_engineer,job_type,completion_date,'$'+ add_commas(project_cost),time);
var key_array = ['##PROJECTMANAGER##','##CLIENT##','##CLIENTNUMBER##','##PROJECTTITLE##','##PROJECTNUMBER##','##PROJECTENGINEER##','##JOBTYPE##','##COMPLETIONDATE##','##PROJECTCOST##','##DATE##'];
var target = createDuplicateDocument(SOURCE_TEMPLATE, client_number + "-" + pad(project_number) + " " + project_title + " Order Entry");
Logger.log("Created new document:" + target.getId());
for(var i=0; i<array_fields.length; i++) {
var key = key_array[i]
var value = array_fields[i]
replaceParagraph(target, key, value);
}
Utilities.sleep(15000);
savePDF(target);
}
}
保存PDF函数
function savePDF(doc) {
var docblob = doc.getAs('application/pdf');
var folder = DocsList.getFolderById(TARGET_FOLDER);
docblob.setName(doc.getName())
folder.createFile(docblob);
}
因此,savePDF 函数应该创建一个已填充文档的 PDF 副本,而是为我提供模板文档的 PDF,或在它被填充之前的新文档。
日志显示来自target.getID() 的正确文档ID 所以我不确定为什么target 没有正确传递给savePDF。我觉得这是一个小错误,但我无法确定问题所在。
【问题讨论】:
标签: pdf google-apps-script google-sheets