应用脚本:为什么我的功能是将Google Sheet保存为PDF,为公式的单元格值提取“REF”?

时间:2018-02-20 20:49:07

标签: google-apps-script

有人可以帮助我辨别为什么我正在使用的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")
}

2 个答案:

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