CON ESTILO
Imanol Terán Maruri - @itermar
Caricatura realizada por @oneeyedman
Con el código ENPRESADIGITALA
1 MES
GRATIS
<iframe name="hidden_iframe" id="hidden_iframe" style="display:none;" onload="if(submitted)
{window.location='ok.html';}"></iframe><form action="url_de_nuestro_formulario" method="POST" id="ss-form" target="hidden_iframe" onsubmit="submitted=true;">// 1. Crear plantilla de documento en Google Docs y copiar el ID
var TEMPLATE_ID = 'ID_del_documento'
// 2. Especifica un nombre para el PDF generado, déjalo vacío para utilizar
//el nombre del template o especifica el nombre en la hoja de cálculo
var PDF_FILE_NAME = 'NombrePDF'
// Constantes
// ---------
// Selecciona determinadas columnas de tu Sheet
var FILE_NAME_COLUMN_NAME = 'File Name'
var EMAIL_COLUMN_NAME = 'Email'
var NAME = 'Name'
var TARGET_FOLDER = 'ID_de_la_carpeta_de_destino_de_las_acreditaciones'
/**
* Crear un nuevo item de menú en la Google Sheet
*/
function onOpen() {
SpreadsheetApp
.getUi()
.createMenu('Generar Acreditación')
.addItem('Generar', 'createPdf')
.addToUi()
} // onOpen()
/**
* Crear PDF volcando datos de la fila activa en los campos definidos en el template
*/
function createPdf() {
var ui = SpreadsheetApp.getUi()
if (TEMPLATE_ID === '') {
ui.alert('TEMPLATE_ID tiene que estar definido en code.gs')
return
}
// Configurar el acceso al template y la Google Sheet
var copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy(),
copyId = copyFile.getId(),
copyDoc = DocumentApp.openById(copyId),
copyBody = copyDoc.getBody(),
activeSheet = SpreadsheetApp.getActiveSheet(),
numberOfColumns = activeSheet.getLastColumn(),
activeRowIndex = activeSheet.getActiveRange().getRowIndex(),
activeRow = activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns).getValues(),
headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues(),
columnIndex = 0,
headerValue,
activeCell,
ID = null,
name = null,
recipient = null;
// Reemplazar con valores de la hoja de cálculo
for (;columnIndex < headerRow[0].length; columnIndex++) {
headerValue = headerRow[0][columnIndex]
activeCell = activeRow[0][columnIndex]
copyBody.replaceText('%' + headerValue + '%', activeCell)
if (headerValue === NAME) {
name = activeCell
} else if (headerValue === EMAIL_COLUMN_NAME) {
recipient = activeCell
}
if (headerValue === NAME) {
name = activeCell
}
// Crear código QR
var image = "https://chart.googleapis.com/chart?chs=150x80&cht=qr&chl="+name;
var blob = UrlFetchApp.fetch(image).getBlob();
}
var myImage = copyBody.appendImage(blob);
// Crear fichero PDF, renombrarlo si es necesario, borrar la copia del doc y enviar
copyDoc.saveAndClose()
var newFile = DriveApp.createFile(copyFile.getAs('application/pdf'))
var targetFolder = DriveApp.getFolderById(TARGET_FOLDER);
targetFolder.addFile(newFile)
if (PDF_FILE_NAME !== '') {
newFile.setName(name+"_"+PDF_FILE_NAME)
} else if (ID !== null){
newFile.setName(ID)
}
copyFile.setTrashed(true);
ui.alert('Acreditación generada!!!')
} // createPdf()