有人可以帮助我辨别为什么我正在使用的Google工作表的PDF版本是由下面的脚本生成的,只显示“细胞值”的“REF”,它应该在某些单元格中提取公式的结果?
function checkSheet() {
var sheetName = "POTemplate";
var folderID = "Eric";
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var poNo = sourceSheet.getRange("N3").getValue();
var pdfName = "Sample Howard" + poNo;
var folder = DriveApp.getFoldersByName(folderID);
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy(folder));
var sheets = destSpreadsheet.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() != sheetName){destSpreadsheet.deleteSheet(sheets[i])}};
SpreadSheetApp.flush();
var theBlob =
destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
var newFile = folder.next().createFile(theBlob);
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
var strUrl = newFile.getUrl()
var html = HtmlService.createTemplateFromFile("NewTab")
html.strUrl = strUrl
SpreadsheetApp.getUi().showModelessDialog(html.evaluate(), "Pdf Link")
}
答案 0 :(得分:0)
我和你有同样的问题。通过复制和解决方案来解决它粘贴在同一位置。 (基本上将公式转换为值。)
我使用公式对单元格进行复制/粘贴,从而将公式更改为文本,一切都通过了! (请记住,如果您希望重复使用要转换的工作表(到pdf),那么您最终必须使用setFormulas语句重置公式。)
我现在在工作,在我的手机上打字。当我回到家时,我会发布代码。
更新:我现在在家,找到了给我这个想法的帖子。见https://webapps.stackexchange.com/questions/70270/how-do-you-replace-a-formula-with-its-result
答案 1 :(得分:0)
假设您删除的工作表用在要保留的工作表的公式中,则需要确保工作表仅包含值。
添加两行代码:
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy(folder));
var source = destSpreadsheet.getSheetByName(sheetName).getDataRange; //new code
source.copyTo (source, {contentsOnly: true}); //new code
var sheets = destSpreadsheet.getSheets();