Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

420
Vistas
AppScript - Writing to a specific cell

I am taking my first steps in any sort of coding language, been proficient with Excel/Sheets for a while and looking to start automating a few small things to make mine and my teams' life a little easier. Currently I have successfully written it to copy my Template sheet and rename the template to the selected name from a dropdown menu on a tab called "Create Sheet" (Cell J21) but I am struggling with getting it to rename cell B1 on the new sheet to the selected name as well, here is what I have for copying the template. I tried a few things I found through Google and YouTube last night for also writing to B1 on the copies of Template but was unsuccessful.

function CreateSheet() {
  
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var TemplateSheet = ss.getSheetByName('Template');
  var newSheet = TemplateSheet.copyTo(ss);
  var SheetName = ss.getRange("J21").getValue();

  // Makes the new sheet the active sheet and renames it to the name in cell 'Create Sheet'J21 //
  ss.setActiveSheet(newSheet);
  ss.renameActiveSheet(SheetName);


  // Renames cell B1 on the new sheet to the name in 'Create Sheet'J21 //
  // ** this is where I am needing help **
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

If you want to modify the value of B1 of the newly created sheet with the value of 'Create Sheet'!J21 on the same spreadsheet, then you can use this:

let createSheetJ21 = ss.getSheetByName('Create Sheet').getRange('J21').getValue();
ss.getSheetByName(newSheet).getRange('B1').setValue(createSheetJ21);

But since you already set the newSheet as the active one, you can use getActiveSheet alternatively.

ss.getActiveSheet().getRange('B1').setValue(createSheetJ21);

You can also use the whole A1 Notation on getRange (including the sheet name), see sample below:

let createSheetJ21 = ss.getRange('Create Sheet!J21').getValue();
// Append `!B1` to newSheet variable   
ss.getRange(newSheet + '!B1').setValue(createSheetJ21);

EDIT:

  • Integrating it with your current script, it should look like the one below. This contains some modifications/optimizations since there are some misunderstandings on your current one. See comments below:
function createSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const templateSheet = ss.getSheetByName('Template');
  const createSheet = ss.getSheetByName('Create Sheet');
  const sheetName = createSheet.getRange('J21').getValue();
  
  // No need to assign since copyTo doesn't return anything
  // By default, this creates a sheet 'Copy of <name of sheet copied>'
  templateSheet.copyTo(ss);

  // setActiveSheet takes Sheet object as input (not sheetName)
  // we need to create Sheet object first using its default name 'Copy of <name of sheet copied>'
  const createdSheet = ss.getSheetByName('Copy of Template');
  ss.setActiveSheet(createdSheet);
  ss.renameActiveSheet(sheetName);
  
  // setValue the cells
  createdSheet.getRange('B1').setValue(sheetName);
}

Sample:

sample

Output:

output

Reference:

  • getRange(a1notation)
  • setValue(value)
  • setActiveSheet(sheet)
  • copyTo(destination)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda