Скрипт для редактирования Google Do c, затем конвертировать в PDF - PullRequest
1 голос
/ 07 мая 2020

Я пытался создать систему, в которой я изменяю содержимое google do c, а затем сохраняю его как pdf. Этот сценарий выполняется в таблице Google, поэтому я не уверен, что это моя проблема. Я могу дойти до того момента, когда он будет отредактирован с правильной информацией, но это все еще Do c, а не PDF. Кроме того, я не занимаюсь программированием, так что это насколько я понял на основе работы других людей. Любая помощь была бы замечательной, спасибо!

function autoFillGoogleDocFromForm(e) {
  //e.values is an array of form values
  var timestamp = e.values[0];
  var InvenName = e.values[1];
  var Case = e.values[2];
  var AppNumber = e.values[3];
  var Firm = e.values[4];
  var InvenTitle = e.values[5];
  var Date = e.values[6];
  var AppType = e.values[7];

  //file is the template file, and you get it by ID
  var file = DriveApp.getFileById('FILE_ID_HERE'); 

  //We can make a copy of the template, name it, and optionally tell it what folder to live in
  //file.makeCopy will return a Google Drive file object
  var folder = DriveApp.getFolderById('FOLDER_ID_HERE')
  var copy = file.makeCopy(Case + ' ' + 'E Assigmnt' + ' ' + AppType + ' ' + AppNumber + ' ' + InvenName ,folder);

  //Once we've got the new file created, we need to open it as a document by using its ID
  var doc = DocumentApp.openById(copy.getId()); 

  //Since everything we need to change is in the body, we need to get that
  var body = doc.getBody(); 
  var footer = doc.getFooter();

  //Then we call all of our replaceText methods
  body.replaceText('{{Name}}', InvenName);
  body.replaceText('{{Title}}' ,InvenTitle);
  body.replaceText('{{AppNumber}}', AppNumber);
  body.replaceText('{{Date}}' , Date);
  footer.replaceText('{{FirmNumber}}', Firm);
  footer.replaceText('{{Case}}', Case);

  //Lastly we save and close the document to persist our changes
  DocumentApp.getActiveDocument().saveAndClose();

  var doc = DocumentApp.getActiveDocument();
  var docblob = DocumentApp.getActiveDocument().getAs('application/pdf');
  docblob.setName(doc.getName() + ".pdf");

}

1 Ответ

1 голос
/ 08 мая 2020

Я считаю, что ваша цель следующая.

  • Вы хотите создать файл PDF, изменив скопированный документ Google с помощью скрипта Google Apps.

Для этого, как об этом ответе?

Пункты модификации:

  • В вашем скрипте скопированный документ Google изменен путем замены текстов. Но измененный документ не экспортируется как файл PDF. Активный документ преобразуется в формат PDF. Но большой двоичный объект не экспортируется как файл.

Измененный скрипт:

При изменении вашего скрипта измените его следующим образом.

От:
DocumentApp.getActiveDocument().saveAndClose();

var doc = DocumentApp.getActiveDocument();
var docblob = DocumentApp.getActiveDocument().getAs('application/pdf');
docblob.setName(doc.getName() + ".pdf");
Кому:
doc.saveAndClose();
var docblob = doc.getBlob();
docblob.setName(doc.getName() + ".pdf");
DriveApp.createFile(docblob);
  • При указанном выше изменении скопированный Документ Google изменяется путем замены текстов, а измененный Документ экспортируется как файл PDF. В этом случае созданный PDF-файл помещается в папку root.

Ссылка:

...