Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
Script de la aplicación: crear una copia de una sola pestaña/hoja

Estoy tratando de hacer una copia de una sola pestaña u hoja de una hoja de cálculo con varias pestañas. Puedo hacer una copia de toda la hoja, sin embargo, esto incluye información que el usuario final no necesita ver.

He visto algunos hilos sobre cómo crear una nueva hoja de cálculo dentro de la secuencia de comandos de las aplicaciones y luego lidiar con los detalles, aunque el formato se vuelve complicado. Sé que hay una manera de solucionar esto, pero me gustaría saber si hay un método tan simple como este. Lo uso actualmente para copiar una hoja completa.

//Escrito como un verdadero novato.

 function Createcopy() { //Base var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Review') var date = sheet.getRange(1,3).getValue(); // Probably wont need. //Folder detail var folderid = '1iEILmAp3JiOTiPjFbDhv0bAfgu6AWhtd' var Folder = "https://drive.google.com/drive/folders/"+folderid Logger.log(folderid) //Create copy var title = sheet.getRange(1,4).getValue(); Logger.log(title) var filename = title var destFolder = DriveApp.getFolderById(folderid); var createdcopy = DriveApp.getFileById(ss.getId()).makeCopy(filename, destFolder); var url = createdcopy.getUrl() Logger.log(url) }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Creo que su objetivo es el siguiente.

  • Desea copiar la hoja específica en una hoja de cálculo de Google a una nueva hoja de cálculo de Google.
  • Desea colocar la nueva hoja de cálculo en la carpeta específica.
  • Desea recuperar la URL de la nueva hoja de cálculo.

Puntos de modificación:

  • Como usted dice, su secuencia de comandos copia toda la hoja de cálculo.

  • En este caso, me gustaría proponer el siguiente flujo.

    1. Recuperar hoja de origen.
    2. Copie la hoja de origen en una nueva hoja de cálculo y elimine la hoja vacía predeterminada.
    3. Mueva una nueva hoja de cálculo a la carpeta de destino.
    4. Recuperar la URL de una nueva hoja de cálculo.

Cuando este flujo se refleja en su guión, se convierte en lo siguiente.

Guión modificado:

 function Createcopy() { var sheetName = 'Review'; // Please set the source sheet name. var folderId = '###'; // Please set the destination folder ID. // 1. Retrieve source sheet. var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(sheetName); var title = sheet.getRange(1, 4).getValue(); // New Spreadsheet title. This is from your script. // 2. Copy source sheet to a new Spreadsheet and remove the default empty sheet. var newSS = SpreadsheetApp.create(title); sheet.copyTo(newSS).setName(sheetName); newSS.deleteSheet(newSS.getSheets()[0]); // 3. Move a new Spreadsheet to the destination folder. var dstFolder = DriveApp.getFolderById(folderId); DriveApp.getFileById(newSS.getId()).moveTo(dstFolder); // 4. Retrieve URL of a new Spreadsheet. var url = newSS.getUrl(); Logger.log(url) }
  • Cuando se ejecuta este script, la hoja de origen se copia en una nueva hoja de cálculo. Y, en una nueva hoja de cálculo, se elimina la hoja vacía predeterminada. De esta manera, se obtiene una Hoja de cálculo que incluye la hoja específica.

Nota:

  • En este caso, si la hoja de origen incluye las fórmulas para cargar los valores de otra hoja, se produce un error. Tenga cuidado con esto. Y también, por ejemplo, cuando la hoja de origen incluye la función personalizada, creo que podría usarse el siguiente script.

     function Createcopy() { var sheetName = 'Review'; // Please set the source sheet name. var folderId = '###'; // Please set the destination folder ID. var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(sheetName); var title = sheet.getRange(1, 4).getValue(); // New Spreadsheet title. This is from your script. var dstFolder = DriveApp.getFolderById(folderId); var newSSFile = DriveApp.getFileById(ss.getId()).makeCopy(title, dstFolder); var newSS = SpreadsheetApp.open(newSSFile); newSS.getSheets().forEach(s => { if (s.getSheetName() != sheetName) newSS.deleteSheet(s); }); var url = newSS.getUrl(); Logger.log(url) }

Referencias:

  • crear (nombre)
  • copyTo(hoja de cálculo) de Class Sheet de Class SpreadsheetApp
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!