Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pdf 在Google sheets中,使用脚本,我可以用纯文本或数字值替换单元格中的所有函数吗';你算过了吗?_Pdf_Google Apps Script_Google Sheets - Fatal编程技术网

Pdf 在Google sheets中,使用脚本,我可以用纯文本或数字值替换单元格中的所有函数吗';你算过了吗?

Pdf 在Google sheets中,使用脚本,我可以用纯文本或数字值替换单元格中的所有函数吗';你算过了吗?,pdf,google-apps-script,google-sheets,Pdf,Google Apps Script,Google Sheets,我有一个多页的电子表格。第一张是订单,您可以在其中输入客户详细信息及其订单摘要 在另一张工作表上,这些数据仅使用预格式化单元格和简单函数复制到领料单和税务发票中的相关单元格,即: ='订单提交表'!E9 然后,该单元格将填充客户名称 然而,我有一个脚本,它复制了那个电子表格,删除了除了带有提货单和税务发票的工作表之外的所有内容,然后将其转换成PDF。所有这些代码都可以正常工作,除了删除所有多余的工作表也会破坏单元格引用,因此我最终得到的领料单和税务发票只是填充了#REF!在所有的牢房里 这是我用

我有一个多页的电子表格。第一张是订单,您可以在其中输入客户详细信息及其订单摘要

在另一张工作表上,这些数据仅使用预格式化单元格和简单函数复制到领料单和税务发票中的相关单元格,即:

='订单提交表'!E9

然后,该单元格将填充客户名称

然而,我有一个脚本,它复制了那个电子表格,删除了除了带有提货单和税务发票的工作表之外的所有内容,然后将其转换成PDF。所有这些代码都可以正常工作,除了删除所有多余的工作表也会破坏单元格引用,因此我最终得到的领料单和税务发票只是填充了#REF!在所有的牢房里

这是我用来生成PDF的完整代码。我知道我至少从其他地方复制了一些,但我不记得最初从哪里得到的

有一节似乎建议用文本替换单元格值以避免断开引用,但它似乎不起作用,并且给出了一个错误:“不正确的范围高度:是59,但应该是999(第22行,文件createPDF)”

功能检查表(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheetName=“领料单”;
var folderID=“1gp3dqdwMSXzwQ6gzhctbQk5ODnpBOHB_200;”//要保存在文件夹中的文件夹id。
var orderNumber=ss.getRange(“‘拣货单’!G4”).getValue()
var pdfName=“领料单”#“+orderNumber+”-“+Utilities.formatDate(新日期(),“GMT+8”,“yyyy-MM-dd”);
var sourceSpreadsheet=SpreadsheetApp.getActive();
var sourceSheet=sourceSpreadsheet.getSheetByName(sheetName);
var folder=DriveApp.getFolderById(folderID);
//复制整个电子表格
var destSpreadsheet=spreadsheet app.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy(“tmp\u convert\u to\u pdf”,文件夹))
//将领料单的内容转储到订单历史记录中
var destSheet=destSpreadsheet.getSheets()[0];
//使用文本重新绘制单元格值(以避免断开引用)
var sourceRange=sourceSheet.getRange(1,1,sourceSheet.getMaxRows(),sourceSheet.getMaxColumns());
var sourcevalues=sourceRange.getValues();
var destRange=destSheet.getRange(1,1,destSheet.getMaxRows(),destSheet.getMaxColumns());
destRange.setValues(sourcevalues);
//删除多余的工作表
var sheets=destSpreadsheet.getSheets();
对于(i=0;i

任何帮助都将不胜感激。

如果您选择整个工作表并选择“复制”,然后选择“粘贴特殊值”>“粘贴值”,只有您将用其值覆盖工作表中的每个公式

您可以按如下方式编写脚本:

var range = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
range.copyTo(range, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

例如,如果我对您的问题的理解是正确的,那么使用而不是
getValues()
?或者,在脚本中,已准备好导出PDF的端点。但在当前脚本中,似乎没有使用端点。那么,如何使用此端点创建PDF文件呢?请阅读有关
getMax\uuuuuuuuuu
getLast\uuuuuuuu
的API文档。然后考虑你所写的数据可能有不同的大小,所以你应该根据它的长度和宽度来获取一个范围。
var range = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
range.copyTo(range, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);