我正在尝试将单页电子表格保存为pdf。许多博客都解释了如何使用getBlob()做到这一点,所以我最终得到了这一点:
var theBlob = jobSpreadSheet.getBlob().getAs('application/pdf');
var newFile = getPdfFolder().createFile(theBlob.setName(fileName + ".pdf"));
要创建jobSpreadSheet,我创建了一个新的电子表格:
var tempSpreadsheet = SpreadsheetApp.create(name);
var driveTempFile = DriveApp.getFileById(tempSpreadsheet.getId());
var jobsFolder = getJobsFolder();
var driveNewFile = driveTempFile.makeCopy(name, jobsFolder);
var jobSpreadsheet = SpreadsheetApp.open(driveNewFile);
接下来,我将模板复制到新的电子表格中,并删除空白的第一张纸:
var jobCard = jobCardTemplate.copyTo(jobSpreadSheet).setName('Job Card');
jobSpreadSheet.deleteSheet(jobSpreadSheet.getSheets()[0]);
然后我更新jobCard中的几个单元格,最后创建pdf。 除创建pdf外,所有步骤均有效。 pdf已创建,它包含模板,但不包含更新的值。 我是否应该以某种方式使创建pdf步骤等待更新保存?
答案 0 :(得分:0)
您是否在脚本中的任何地方调用.saveChanges()? (在获取斑点之前。) 不确定工作表是否需要这样做,但是我在文档中遇到了类似的问题,因为在获取Blob之前我没有保存更改。
编辑:
只需使用以下代码进行测试,似乎不需要.saveChanges:
function test() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
sheet.getRange(1, 1, 1, 1).setValue("Test");
var file = DriveApp.getFileById(ss.getId());
var blob = file.getBlob().getAs('application/pdf');
DriveApp.createFile(blob);
}