Я пытаюсь создать Google Doc на основе данных формы. Я сделал это с другими формами, которые берут Doc и сохраняют их как PDF-файлы. С помощью этого сценария я смог создать новые документы и переименовать файл, но мне нужно переместить их в другую папку. Код, который я использовал для этого с помощью PDF-файлов, работает (в самом низу) без проблем, но я не могу понять, что я делаю неправильно. У меня не было никакой удачи в поиске рабочих решений в Интернете.Скопировать, переименовать и переместить документ
var TEMPLATE_ID = 'template id number';
var folder = DriveApp.getFolderById('folder ID number');
// When Form Gets submitted
function onFormSubmit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheet = ss.getSheetByName("Goal Tracking"),
activeSheet = SpreadsheetApp.getActiveSheet(),
copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy(),
copyId = copyFile.getId(),
copyDoc = DocumentApp.openById(copyId),
copyBody = copyDoc.getActiveSection(),
numberOfColumns = sheet.getLastColumn(),
activeRowIndex = sheet.getActiveRange().getRowIndex(),
activeRow = activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns).getValues(),
headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues(),
columnIndex = 0,
fileName = "Goals " + activeRow[0][2] + ' ' + activeRow[0][3]+'_'+activeRow[0][5];
//Get information from form and set as variables.
var lastName = e.values[2];
var firstName = e.values[3];
var programCode = e.values[4];
var goal1 = e.values[6];
var goal2 = e.values[7];
var goal3 = e.values[8];
// Replace place holder keys,in our google doc template
copyBody.replaceText('%First Name%', firstName);
copyBody.replaceText('%Last Name%', lastName);
copyBody.replaceText('%Program Code%', programCode);
copyBody.replaceText('%Goal Statement 1%', goal1);
copyBody.replaceText('%Goal Statement 2%', goal2);
copyBody.replaceText('%Goal Statement 3%', goal3);
// Save and close the temporary document
copyDoc.saveAndClose();
copyDoc.setName(fileName);
(продолжая)
Вот где проблема
folder.addFile(newFile);
}
Я получаю ошибку в исполнении транскрипта, но я не понимаю, почему я получаю это: «Не удается найти . метод AddFile (Документ)»Я также попытался использовать:
copyDoc.makeCopy(fileName, folder).getId;
задать имя файла и папку, но это также не
.Для чего стоит, вот что я использовал для создания PDF-файла, который работает в этом скрипте.
copyDoc.saveAndClose();
var pdfFile = DriveApp.createFile(copyFile.getAs("application/pdf"));
var pdfFile2 = pdfFile.setName(fileName);
folder.addFile(pdfFile2);
copyFile.setTrashed(true);
Спасибо :)
Используйте 'Logger.log ('folder:' + folder);' statement непосредственно перед оператором 'folder.addFile (newFile);'. В журналах должно отображаться ** папка: папка ** Если папка имеет значение null или undefined, это приведет к ошибке. Единственная другая возможность заключается в том, что что-то не так с параметром 'newFile'. Я не вижу, где устанавливается 'newFile'. –
Logger.log не помогает, за исключением того, что он отображает правильную папку в журнале/расшифровке, поэтому я предполагаю, что это должен быть параметр newFile, о котором вы упомянули. Я попытался установить параметр newFile, создав: var newFile = copyDoc.setName (имя_файла); 'Он устанавливает имя, но не перемещает файл в другую папку. Транскрипт exeution по-прежнему говорит 'Не удается найти метод addFile (document)' – TimW
Я понял это. Пришлось изменить 'copyDoc.setName (имя_файла)' на 'copyFile.setName (имя_файла)'. Я не могу сказать, что я полностью понимаю, почему это так, за исключением того, что я новичок. Спасибо за помощь. – TimW