【发布时间】:2021-08-01 07:29:02
【问题描述】:
我的 gsheet 有一些格式化的文本和一个表格。我需要复制整个内容并将其粘贴到我创建的空白内容的 gdoc 模板中,除了页眉(包含徽标、图像和超链接)和页脚(公司地址),然后将完成的 gdoc 转换为 pdf。
最初我提到How to embed a range from GSHEETS in GDOCS with google-apps-scripts?,但那个是嵌入链接和对象,从答案中我知道现在不可能,但我希望在保留所有格式和表格的同时粘贴复制的内容仍然是可能的.
我尝试了下面的代码。没有错误,但全部粘贴为纯文本只是因为我只知道 replaceText 命令。任何人都可以更正我的代码吗?
function sheetTodocTopdf() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var source = sheet.getSheetByName("Import");
//file is the gdoc template file
var file = DriveApp.getFileById('13mFHFOQw8JTXzXLlgmlIRFBQA2_LL9uEZSOS2BumqeQ');
//duplicate the template file in the same folder
var folder = DriveApp.getFolderById('1Z9UWlwSyeklKUHOlCevMyKq56K1QwApC')
var copy = file.makeCopy("Report", folder);
//Open the duplicated gdoc
var doc = DocumentApp.openById(copy.getId());
var lastRow = source.getLastRow();
var srcRange = source.getRange("A1:G57").getValues();
//Replacing the text in the gdoc with the copied range of gsheet
doc.replaceText('{content}', srcRange);
doc.saveAndClose();
var doc = DriveApp.getFileById(copy.getId()).getAs("application/pdf");
var pdf = doc.setName("Report.pdf");
folder.createFile(pdf);
};
谢谢。 DZ
【问题讨论】:
-
如果您最后想要 PDF,我建议您在电子表格中完成所有操作。您可以尝试在工作表上添加带有徽标和超链接等的标题,并将工作表另存为 PDF。
-
您可以将二维数组作为表格粘贴到 GDoc developers.google.com/apps-script/reference/document/table 这没什么大不了的。但是保持单元格的格式可能是一项艰巨的任务。这取决于您的桌子的外观。
-
@YuriKhristich,我以前做过,但它不适用于页脚。这就是为什么我开始想到这个替代方案。 GAS 没有参数、语法或命令来传递我们在生成 pdf 时在 gsheet 中设置的自定义页脚。但是 gdocs 一切都很好。
-
当然,如果您的数据恰好具有相同的行数和列数,您可以使用虚拟表格制作文档模板并逐个单元格替换其数据,而不是替换整个表。这样单元格格式将保持不变。也许您可以在用新数据填充其单元格之前向虚拟表添加新行(并保留前行的格式)。
-
我想创建隐形表,但我没有尝试过,因为这听起来很麻烦。那么,有了您所有的解决方法建议,这是否意味着简而言之,没有办法使用简单的 GAS 语法/命令/参数来做到这一点?
标签: google-apps-script google-sheets google-docs