pdf - 使用 getBlob() 和 activesheet 创建 pdf 缺少最近的更新
问题描述
我正在尝试将单页电子表格保存为 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 步骤以某种方式等待更新被保存?
解决方案
您是否在脚本中的任何位置调用 .saveChanges() ?(在获取 blob 之前。)不确定工作表是否需要这样做,但我在文档中遇到了类似的问题,因为在获取 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);
}
推荐阅读
- java - 垃圾收集是自动工作还是手动工作?
- python - Pytorch:变量数据必须是张量,但有变量
- android - 如何获得 onClick 状态?
- c - 使用带有函数的二维字符数组
- javascript - 数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。在反应js?
- vim - Vim 插入模式下的所有移动和编辑都是不好的做法吗?
- html - Ruby Table CSS - 背景无法正常工作
- angular - 将模板导入 Angular 6 的方法
- jquery - 使用简单 Jquery 的多个模态相同页面(在桌面和移动设备上响应)
- anylogic - 如何减少我使用的源块的数量?