【发布时间】: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