Reputation: 492
I have a Google Docs template which is automatically copied into a folder and replace specific values with values coming from spreadsheet cells.
The template contains values such as <<41>>
which are used to be "find-and-replaced" with values coming from a spreadsheet.
The find-and-replace process is fine, and the results of the document looks like this image below
Now, I want this document to be converted into PDF after it has been updated, so I made a function for the convertion and call it at the bottom after all the codes has been executed.
Here's the function:
//convert to PDF
function convertPDF(FileID,newName) {
Utilities.sleep(120000);
docblob = DocumentApp.openById(FileID).getAs('application/pdf');
/* Add the PDF extension */
docblob.setName(newName + ".pdf");
var file = DriveApp.createFile(docblob);
}
The convertion works fine, but the converted document isn't updated. Rather, it is like it was the one freshly copied from the template, before the values were changed.
If you may notice, I have added a "sleep" timer before in the conversion function so as to delay the conversion and give time for the changes to be saved, I've tried 1 and 2 minutes sleep but still it doesn't work.
What can I do to make sure the PDF is created from the updated template?
Upvotes: 5
Views: 1453
Reputation: 357
I was searching for an answer for this same problem but for Google Sheets. Gave saveAndClose() a shot, but it didn't work for Sheets. Did some more searching and found that the Sheets solution for a similar problem is:
SpreadsheetApp.flush()
Here is the relevant Question/Answer.
Hope this helps someone get to their answer faster.
Upvotes: 0
Reputation: 492
The function I provided above works fine, we just need to forced the script to save the changes by calling the saveAndClose() method before calling the function that converts the doc into PDF.
Upvotes: 7