结合使用ActiveB和getBlob()创建pdf缺少最新更新

时间:2018-11-27 09:10:16

标签: pdf google-apps-script

我正在尝试将单页电子表格保存为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步骤等待更新保存?

1 个答案:

答案 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);


}