谷歌应用程序脚本:如何保存(仅一个)谷歌工作表以PDF格式驱动文件夹?
正在将我打开的名为“POTemplate”的Google工作表以PDF格式保存到我的Google驱动器上名为“Eric”的文件夹中。在第二行到最后一行遇到障碍,导致错误,说明无法找到文件夹迭代器谷歌应用程序脚本:如何保存(仅一个)谷歌工作表以PDF格式驱动文件夹?,pdf,google-apps-script,google-sheets,Pdf,Google Apps Script,Google Sheets,正在将我打开的名为“POTemplate”的Google工作表以PDF格式保存到我的Google驱动器上名为“Eric”的文件夹中。在第二行到最后一行遇到障碍,导致错误,说明无法找到文件夹迭代器 function checkSheet() { var sheetName = "POTemplate"; var folder = "Eric"; var pdfName = "Sample PO " var sourceSpreadsheet
function checkSheet() {
var sheetName = "POTemplate";
var folder = "Eric";
var pdfName = "Sample PO "
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var folder = DriveApp.getFoldersByName(folder);
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])}};
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 theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
var newFile = folder.createFile(theBlob);
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}
功能检查表(){
var sheetName=“POTemplate”;
var folder=“Eric”;
var pdfName=“样品采购订单”
var sourceSpreadsheet=SpreadsheetApp.getActive();
var sourceSheet=sourceSpreadsheet.getSheetByName(sheetName);
var folder=DriveApp.getFoldersByName(文件夹);
var destspeadsheet=SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy(文件夹));
var sheets=destSpreadsheet.getSheets();
对于(i=0;i
以下函数返回一组名为文件夹的文件夹
var folder = DriveApp.getFoldersByName(folder);
要在FolderIterator中的第一个文件夹中创建文件,必须按照以下方式对其进行定义:
var newFile = folder.next().createFile(theBlob);
您还可以检查folderIterator是否有任何文件夹,首先,如下所示:
if(folder.hasNext()){
var newFile = folder.next().createFile(theBlob);
} else {
DriveApp.createFolder("Eric").createFile(theBlob)
}
代码改进:(可选)
下面的代码行似乎没有任何意义
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);
由于您正在制作原始电子表格的副本,因此您的工作表“POTemplate”将完全相同。因此,再次复制它似乎没有意义 谢谢你,杰克!它工作得很好。最后一个问题:从哪里/如何消除PDF中的网格线?要获得这种粒度控制,您必须使用导出链接(据我所知),如图所示。另外,你最好提出一个新问题,从其他人那里得到更多的建议。