I have the following script that takes a row a from a spreadsheet and replaces placeholders in a document if the column name matches. I use the %placeHolder%
format. The replaceText()
method works perfectly, but if that field is blank, how can I have it replace the place holder to blank or "N/A"? I've tried a couple different routes but am probably missing something simple.
function formatTemplate(){
var postFlightTemplate = DocsList.getFileById('templateKey').makeCopy().getId();
var template = DocumentApp.openById(postFlightTemplate);
var templateHeader = template.getHeader();
var templateBody = template.getActiveSection();
var flightLog = SpreadsheetApp.openById('spreadsheetKey');
var sheet = flightLog.getSheetByName('Flight Tracking');
var data = ScriptsLib.getRowsData(sheet, sheet.getRange('A2:2'), 1);
var keys = ScriptsLib.getKeys(data[0]);
for (var key in keys){
Logger.log('key:'+keys[key]+' / value:'+data[0][keys[key]]);
if (data[0][keys[key]] != null || data[0][keys[key]] != ''){
templateHeader.replaceText('%'+keys[key]+'%', data[0][keys[key]]);
templateBody.replaceText('%'+keys[key]+'%', data[0][keys[key]]);
}else{
Logger.log('empty key:'+keys[key]+' / value:'+data[0][keys[key]]);
templateBody.replaceText('%'+keys[key]+'%', 'N/A');
}
}
template.setName('RR-'+data[0].incidentNumber+'-'+data[0].flightNumber);
template.saveAndClose();
MailApp.sendEmail('email@email.com', 'Post Flight Report','See Run Report', {name: 'P1AR Flight Log', attachments: template});
}