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格式驱动文件夹?_Pdf_Google Apps Script_Google Sheets - Fatal编程技术网

谷歌应用程序脚本:如何保存(仅一个)谷歌工作表以PDF格式驱动文件夹?

谷歌应用程序脚本:如何保存(仅一个)谷歌工作表以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

正在将我打开的名为“POTemplate”的Google工作表以PDF格式保存到我的Google驱动器上名为“Eric”的文件夹中。在第二行到最后一行遇到障碍,导致错误,说明无法找到文件夹迭代器

    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中的网格线?要获得这种粒度控制,您必须使用导出链接(据我所知),如图所示。另外,你最好提出一个新问题,从其他人那里得到更多的建议。