【问题标题】:Converting a Google doc to PDF, then moving to another folder将 Google 文档转换为 PDF,然后移动到另一个文件夹
【发布时间】:2021-12-28 01:35:35
【问题描述】:

我正在编写脚本,该脚本将使用电子表格中的单元格值填充 Google 文档模板。已编辑文档的副本被创建并转换为 PDF。然后,我希望将 doc 和 pdf 都移动到指定的文件夹中。我坚持将pdf移到文件夹中。我创建了一个函数来移动文档,它似乎与 Google 文档副本一起工作正常,但是当函数为 pdf 运行时返回错误。该错误似乎来自 moveFile 函数。我也尝试过将 moveFile pdf 调用移动到 fillLetter,但仍然出现相同的错误。这是我第一次尝试使用 Google 脚本进行编码,因此我们将不胜感激任何建议。谢谢!

function fillLetter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];//Form Responses tab
  var templateId = '1d-CKr_Xi27FrWsH6eWdUCWKyzrLjy3ivTjLkk_WyJ4s';//Test doc

  //get candidates row number from user input
  var ui = SpreadsheetApp.getUi();
  var rowNum = ui.prompt("Please enter candidate row number");

  //activates first column in selected row
  var col = sheet.getRange("A"+ rowNum.getResponseText());
  sheet.setActiveRange(col);
  var candName = sheet.getActiveCell().getValue();

  col = sheet.getRange("B"+ rowNum.getResponseText());
  sheet.setActiveRange(col);
  var location = sheet.getActiveCell().getValue();

  //creates copy of template doc and renames
  var lastName = candName.split(" ");
  var filename = candName.substring(0,1) + lastName[lastName.length - 1] + ' - Offer Letter';
  var newOffer = DriveApp.getFileById(templateId).makeCopy();
  var offerId = newOffer.getId();
  DriveApp.getFileById(offerId).setName(filename);

  //gets body of template doc and replaces text
  var doc = DocumentApp.openById(offerId);
  var body = doc.getBody();
  var todaysDate = Utilities.formatDate(new Date(), 'PST', 'MMMM dd, yyyy');
  body.replaceText('{{Todays date}}', todaysDate);
  body.replaceText('{{Candidate name}}', candName);
  body.replaceText('{{Location}}', location);
  

  doc.saveAndClose();

  //Creates folder and moves newly created files
  var folderName = DriveApp.createFolder(candName).getId();
  convertPDF(offerId, folderName); // Line 52
  moveFile(offerId, folderName);
  
}

function convertPDF(fileToCopy, folder) {
  var docFolder = DriveApp.getFolderById(folder);
  var copy = DriveApp.getFileById(fileToCopy);
  //Add the PDF extension 
  var docblob = copy.getAs('application/pdf');
  docblob.setName(copy.getName() + ".pdf");
  var pdfFile = DriveApp.createFile(docblob);
  var fileId = pdfFile.getId();
  Logger.log("Offer PDF id - " + fileId);//for debug
  moveFile(fileId, docFolder); // Line 66
}

function moveFile(fileId, folderId) {
  var file = DriveApp.getFileById(fileId);
  DriveApp.getFolderById(folderId).addFile(file); // Line 72: wh/ error is most likely occurring
}

以下是来自 Logger 的错误消息:

Error   
Exception: Unexpected error while getting the method or property getFolderById on object DriveApp.
moveFile    @ testCode.gs:72
convertPDF  @ testCode.gs:66
fillLetter  @ testCode.gs:52

【问题讨论】:

    标签: javascript pdf google-apps-script


    【解决方案1】:

    在当前阶段,您可以使用moveTo 方法移动Google Drive 上的文件。这是2020年7月27日添加的。Ref在你的脚本中,当moveFile被修改时,变为如下。

    修改脚本:

    function moveFile(fileId, folderId) {
      var file = DriveApp.getFileById(fileId);
      file.moveTo(DriveApp.getFolderById(folderId));
    }
    

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多