esta es la primera vez que hago una pregunta. He estado tratando de buscar cosas de secuencias de comandos de Google, pero no entiendo dónde está la comunidad.
Entonces, estoy trabajando en un proyecto de automatización de documentos, donde mi empresa quiere hacer algunos documentos a partir de una hoja de cálculo. Estoy trabajando en el primero, ahora que es difícil, pero he estado tratando de hacer el bucle solo para generar 1 documento, pero sigue generando documentos sin parar, solo con una parada manual puede hacer que se detenga. Aquí está el código que estoy usando
function createPIN() { const googleDocTemplate = DriveApp.getFileById('1bwuLoNJQOeuBdLa6Nq-G320J6pkpHt-_aSRdbZ8IqJ8'); const destinationFolder = DriveApp.getFolderById('1wzhzMRu6HpP0eOnnFl21ZuPaOOZVqFa4'); const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sisal'); const rows = sheet.getDataRange().getValues(); rows.forEach(function(row, index) { if (index === 0) return; if (rows[3][1] | rows[3][2]) return; const copy = googleDocTemplate.makeCopy('Def1', destinationFolder); const doc = DocumentApp.openById(copy.getId()); const body = doc.getBody(); body.replaceText('{{Project_Name}}', rows[1][1]); Logger.log(rows[1][1]) body.replaceText('{{Name_of_the_Ejido_owner}}', rows[2][1]); Logger.log(rows[2][1]) body.replaceText('{{Project_Technical_Advisor}}', rows[3][1]); Logger.log(rows[3][1]) body.replaceText('{{Total_Area}}', rows[4][1]); body.replaceText('{{Management_Area}}', rows[5][1]); doc.saveAndClose(); const url = doc.getUrl(); sheet.getRange(index + 1, 4).setValue(url) //Manda Url a casilla de link a PIN }) }Voy a adjuntar la hoja de cálculo con la que estoy trabajando para que pueda ver el origen de los datos. Todavía no puedo hacer que el bucle se detenga. ¿Alguna sugerencia?
Para cualquiera que intente hacer esto; el problema que tuve fue entender el uso del bucle forEach dentro de la función: en el tutorial que estaba viendo, usaban el bucle para acceder a toda la fila, mientras que, en mi caso, necesitaba usar filas independientes, porque la naturaleza de mi base de datos. Entonces, voy a especificar cómo resolví mi problema:
function createPIN() { SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Page1'); const rows = sheet.getDataRange().getValues(); const copy = googleDocTemplate.makeCopy('Def1', destinationFolder); const doc = DocumentApp.openById(copy.getId()); const body = doc.getBody(); ## Just forget the loop body.replaceText('{{Something}}', rows[x][x]); body.replaceText('{{Something2}}', rows[x][y]); doc.saveAndClose(); }Simplemente no necesita un bucle en absoluto, ya que el objetivo es hacer un documento a la vez.