【问题标题】:How to create another folder using google appscript?如何使用谷歌应用脚​​本创建另一个文件夹?
【发布时间】:2021-10-06 02:51:43
【问题描述】:

我在 google app 脚本中有这个现有代码,它命令我的工作将其转换为 pdf 文件并将转到其文件夹。

例子:

我正在制作发票,它会自动转换为 PDF,所有 PDF 文件都会转到另一个名为“发票”的文件夹中,客户的所有发票都会在那里收集。

但是,我需要将这些 pdf 文件分开并创建以客户命名的文件夹。这意味着,在文件夹 invoices 内,我需要有另一个以客户名称命名的文件夹,并且在客户的文件夹内,他们的所有发票都将聚集在那里。

但是,我无法获得正确的代码。我现在应该在代码中添加哪些可能的代码?

function makePDF() {
  
  // Get the currently active spreadsheet URL (link)
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var token = ScriptApp.getOAuthToken();
  var sheet = ss.getSheetByName("Paycheck");

  //Creating an exportable URL
  var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());
  var folderID = "1y2_Rw_4l4SZ1i7SaMJLW3953FI9YRTAs"; // Folder id to save in a folder.
  var folder = DriveApp.getFolderById(folderID);
  var employeeName = ss.getRange("'Paycheck'!C4").getValue()
  var pdfName = employeeName + " - " + Utilities.formatDate(new Date(), "GMT+8", "yyyy-MM-dd");

  /* Specify PDF export parameters
  From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
  */
  var url_ext = 'exportFormat=pdf&format=pdf'        // export as pdf / csv / xls / xlsx
  + '&size=letter'                       // paper size legal / letter / A4
  + '&portrait=true'                    // orientation, false for landscape
  + '&fitw=true&source=labnol'           // fit to page width, false for actual size
  + '&sheetnames=false&printtitle=false' // hide optional headers and footers
  + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
  + '&fzr=false'                         // do not repeat row headers (frozen rows) on each page
  + '&gid=';                             // the sheet's Id
    
  // Convert individual worksheet to PDF
  var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {
    headers: {
      'Authorization': 'Bearer ' +  token
    }
  });
  
  //convert the response to a blob
  var blobs = response.getBlob().setName(pdfName + '.pdf');
  
  //saves the file to the specified folder of Google Drive
  var newFile = folder.createFile(blobs);
  
  // Define the scope
  Logger.log("Storage Space used: " + DriveApp.getStorageUsed());

}

【问题讨论】:

    标签: function google-apps-script google-sheets


    【解决方案1】:

    我相信你的目标如下。

    • 您要创建一个值为pdfName 的新文件夹,并将创建的PDF 文件放入该文件夹中。

    在这种情况下,如何修改你的脚本如下?

    发件人:

    //convert the response to a blob
    var blobs = response.getBlob().setName(pdfName + '.pdf');
    
    //saves the file to the specified folder of Google Drive
    var newFile = folder.createFile(blobs);
    

    收件人:

    //convert the response to a blob
    var blobs = response.getBlob().setName(pdfName + '.pdf');
    
    // I added below script.
    var folders = folder.getFoldersByName(pdfName);
    folder = folders.hasNext() ? folders.next() : folder.createFolder(pdfName);
    
    //saves the file to the specified folder of Google Drive
    var newFile = folder.createFile(blobs);
    
    • 在本次修改中,如果var folder = DriveApp.getFolderById(folderID);的文件夹中已经存在相同的文件夹,则将该文件放到现有文件夹中。当文件夹中不存在同一个文件夹时,pdfNamevar folder = DriveApp.getFolderById(folderID);的文件夹下新建一个文件夹,并将文件放入创建的文件夹中。

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 2023-01-19
      • 2020-06-20
      • 1970-01-01
      相关资源
      最近更新 更多