Исключение: параметры (строка,DriveApp.File) не соответствуют сигнатуре метода для DriveApp.File.makeCopy

#javascript #google-apps-script #methods #parameters #google-drive-api

#javascript #google-apps-script #методы #параметры #google-drive-api

Вопрос:

Я новичок в скрипте, и мне было интересно, могу ли я получить помощь с вопросом. В настоящее время я пытаюсь автоматически заполнить документ Google из отправки формы Google. В прошлом у меня был успех с небольшим тестом, но после повторной попытки с немного большей формой я сталкиваюсь с этой ошибкой:

«Исключение: параметры (строка, DriveApp.File) не соответствуют сигнатуре метода для DriveApp.File.makeCopy»

Мне не сразу понятно, о чем это мне говорит. Что я знаю, так это то, что я ничего не делаю иначе, чем в моем последнем мелкомасштабном тестировании, поэтому скрипт, который я запускаю, выглядит на первый взгляд надежным, поэтому я надеюсь, что кто-нибудь сможет мне помочь, указав, что не так. Вот сценарий:

 function autoFillFormFromDoc(e) {

  var clientCode = e.values[1];

  var email = e.values[2];

  var warningSigns = e.values[3];

  var internalCopingStrategies = e.values[4];

  var peopleAndSocial = e.values[5];

  var peopleWhoCare = e.values[6];

  var creatingSafety = e.values[7];

  var clientName = e.values[8];

  var date = e.values[9];
  
  var templateFile = DriveApp.getFileById("1Vs8y3eZbyBlef8HlV7v9nhSRvaH39Cg5P0Q5zhpZBA");
  var templateResponseFolder = DriveApp.getFileById("1OxsOwU6rAvohqRqDVOfH_f70kvu30HZp");
  
  var copy = templateFile.makeCopy(clientName, templateResponseFolder);
  
  var doc = DocumentApp.openById(copy.getId());
  
  var body = doc.getBody();
  
  body.replaceText("{{ClientCode}}", clientCode);
  
  body.replaceText("{{Email}}", email);

  body.replaceText("{{WarningSigns}}", warningSigns);

  body.replaceText("{{InternalCopingStrategies}}", internalCopingStrategies);

  body.replaceText("{{PeopleAndSocial}}", peopleAndSocial);

  body.replaceText("{{PeopleWhoCare}}", peopleWhoCare);

  body.replaceText("{{CreatingSafety}}", creatingSafety);

  body.replaceText("{{ClientName}}", clientName);

  body.replaceText("{{Date}}", date);
  
  doc.saveAndClose();
  
}
  

Ответ №1:

Проблема:

File.makeCopy(name, destination) ожидает два аргумента

  • name типа string и
  • destination типа folder

Скрипт вызывает destination с типом file . Поэтому он выдает ошибку

Параметры (строка,DriveApp.File) не соответствуют сигнатуре метода для DriveApp.File.makeCopy

Решение:

Получить folder вместо file :

 var templateResponseFolder = DriveApp.getFolderById("[FOLDER_ID]");