'Dynamic File Name form Google Sheet

With this script I can generate a google document taking some information from google sheet.
Actually there is the function for the name of the file with a popup where a user put the file name.
I would to avoid this, giving to the doc generated, automatically the file name with this logic:

The value in A2 (in the tab named "General") + the word "Contract".

How could I proceed?

function CheckList() {
  var tableColumn = [59,61]; //
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var TEMPLATE_ID = 'xxx';
  var ui = SpreadsheetApp.getUi();
  if (TEMPLATE_ID === '') {        
    ui.alert('TEMPLATE_ID needs to be defined in code.gs')
    return
  }
  var copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy();
  var copyId = copyFile.getId();
  var copyDoc = DocumentApp.openById(copyId);
  var FILE_NAME = ui.prompt('Inserisci il nome della Checklist:', ui.ButtonSet.OK);
  copyDoc.setName(FILE_NAME.getResponseText());
  var copyBody = copyDoc.getBody();
  var lastColumn = sheet.getLastColumn();
  var activeRowIndex = sheet.getActiveRange().getRowIndex();
  var activeRow = sheet.getRange(activeRowIndex, 1, 1, lastColumn).getDisplayValues()[0];
  var headerRow = sheet.getRange(1, 1, 1, lastColumn).getDisplayValues()[0];
  for (var columnIndex = 0; columnIndex < headerRow.length; columnIndex++) {
    if (columnIndex === tableColumn[0] - 1) { // Check if column corresponds to table data
      try {
        var tableValues = sheet.getRange(2, tableColumn[0], sheet.getLastRow()-1,tableColumn[1]-tableColumn[0]+1).getDisplayValues();
        var placeholder = `%${headerRow[tableColumn[0]-1]}%`;
        var rangeElement = copyBody.findText(placeholder);
        var element = rangeElement.getElement();
        console.log(element.asText().getText())
        var childIndex = copyBody.getChildIndex(element.getParent());
        console.log(childIndex)
        const elementText = copyBody.getChild(childIndex).asText().getText();
        const [beforeText, afterText] = elementText.split(placeholder);
        copyBody.getChild(childIndex).asText().setText('');
        copyBody.insertParagraph(childIndex, beforeText);
        copyBody.insertTable(childIndex+1, tableValues).setColumnWidth(0, 270).setColumnWidth(1, 90).setColumnWidth(2, 90);
        copyBody.insertParagraph(childIndex+2, afterText);
      } catch(err) {
        continue;
      }
    } else if (columnIndex < tableColumn[0] - 1 || columnIndex > tableColumn[1] - 1) {
      var nextValue = formatString(activeRow[columnIndex]);
      copyBody.replaceText('%' + headerRow[columnIndex] + '%', nextValue);
    }                     
  }
copyDoc.saveAndClose();
var url = "https://docs.google.com/document/d/"+ copyId +"";
var htmlString = "<base target=\"_blank\">" +
"<h2><a href=\"" + url + "\">Apri il documento creato!</a></h2>" +
"<p align=center><img src='' /></p>";
var html = HtmlService.createHtmlOutput(htmlString)
.setHeight(600)
.setWidth(600);
SpreadsheetApp.getUi().showModalDialog(html, 'Non mollare!')
}


Solution 1:[1]

I have solved myself:

  var company = sheet.getRange('General!A2').getDisplayValue();
  var FILE_NAME = company + " - " + "Contract";
  copyDoc.setName(FILE_NAME);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Gavis