Contenido
Indice Dinámico..................................................................................................................................2
Creación Carpetas Dinámico..............................................................................................................3
Conversor Dirección a Coordenadas Georreferenciadas....................................................................4
URL Absoluta de Google Drive a Google Sheets.................................................................................6
Formulario Script en Google Sheet, con búsqueda y modificaciones.................................................8
Indice Dinámico
function indiceDinamico (){
//Configuracion
const nombreInicio="Inicio";
var misHojas=SpreadsheetApp.getActiveSpreadsheet().getSheets();
var hojaInicio=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Inicio");
var i=2;
//Borrar todo el contenido antes de actualizar el indice
hojaInicio.getRange(2,1,hojaInicio.getLastRow()).clearContent();
//Ciclo que recorre todas las pestañas actuales
misHojas.forEach(function(hoja){
//Condicional para no seleccionar pestaña "Inicio"
if(hoja.getName()!=nombreInicio){
//Agrega formula hipervinculo con el nombre y la Id de cada pestaña
var formula='=HYPERLINK("#gid='+hoja.getSheetId()+'";"'+hoja.getName()+'")'
hojaInicio.getRange(i,1).setFormula(formula)
//Agrega formula hipervinculo con pestaña Inicio a cada pestaña
hoja.getRange(1,1).setFormula('=HYPERLINK("#gid=0";"Ir a Inicio")')
i++;
} //Cierre If Inicio
}) //Cierre Ciclo
}
Creación Carpetas Dinámico
function crearCarpeta(){
var libro=SpreadsheetApp.getActiveSpreadsheet()
var hoja=libro.getSheetByName("Config")
var nombreMaestra=hoja.getRange("B2").getValue()
var carpeta=DriveApp.createFolder(nombreMaestra)
hoja.getRange("C2").setValue(carpeta.getId())
}
function crearCarpetaDentroDeCarpeta(){
var libro=SpreadsheetApp.getActiveSpreadsheet()
var hoja=libro.getSheetByName("Config")
var idMaestra=hoja.getRange("C2").getValue()
var carpeta=DriveApp.getFolderById(idMaestra)
var subCarpetas=hoja.getRange(4,2,hoja.getLastRow()-3).
getValues();
console.log(subCarpetas)
subCarpetas.forEach((fila,indice)=>{
var subcarpeta=carpeta.createFolder(fila[0]);
var idSubcarpeta=subcarpeta.getId();
hoja.getRange(indice+4,3).setValue(idSubcarpeta)
})
}
function OnOpen() {
const menu=SpreadsheetApp.getUi().createMenu("Carpetas");
menu.addItem("Crear carpeta maestra","crearCarpeta");
menu.addItem("Crear sistema de carpetas","crearCarpetaDentroDeCarpeta");
menu.addToUi();
}
Conversor Dirección a Coordenadas Georreferenciadas
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dataRangeAll = sheet.getDataRange();
var ultimaFila = dataRangeAll.getLastRow();
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Geocodificar')
.addItem('Convertir direcciones en coordenadas', 'geocodificar')
.addToUi();
}
// Geocodificar todas las filas a partir de la 2da
function geocodificar() {
var filaInicial = 2;
var dataRange = sheet.getRange(filaInicial, 1,ultimaFila, 5);
var data = dataRange.getValues();
// Recorremos todas las filas del rango
for(var i=0; i< data.length; i++) {
var fila = data[i];
var direccion = fila[0];
// Solamente haremos algo si hay algo en la celda de dirección,
// para no generar errores inesperados
if(direccion != "") {
// Aquí es donde nos conectamos con Google Maps
var geocoder = Maps.newGeocoder().geocode(direccion);
var resultado = geocoder.results[0];
Utilities.sleep(500);
var latitud = 0;
var longitud = 0;
// Si el geocoder de Google Maps nos devuelve un resultado satisfactorio,
// escribimos la latitud y longitud en las celdas correspondientes al a fila
if(resultado) {
latitud = resultado.geometry.location.lat;
longitud = resultado.geometry.location.lng;
sheet.getRange(filaInicial + i, 4).setValue(latitud);
sheet.getRange(filaInicial + i, 5).setValue(longitud);
}
}
}
}
URL Absoluta de Google Drive a Google Sheets
function enlace() {
// seleccionar la hoja de cálculo actual
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Hoja 1');
// obtener la ultima fila y columna
var lastCol = sheet.getLastColumn();
var lastRow = sheet.getLastRow();
//limpiar contenido
sheet.getRange(2, 1, lastRow, lastCol).clearContent();
// identificacion de la carpeta de trabajo
var fldr=DriveApp.getFolderById("1HB28oMhn-weBPqlmuQ4g4QaFk5es2NgP");
var files=fldr.getFiles();
// crear variable para usar como contador para verificar el número de archivo
var fileCounter = 0;
// cree una matriz vacía para insertar datos de archivo para agregar a la hoja al final
var fileData = [];
// recorrer cada archivo devuelto ***********************
while (files.hasNext()) {
// obtener el archivo
var file = files.next();
// obtener el nombre del archivo
var fileName = file.getName();
// quitar extension
var fileSimple= (fileName.split("."))[0];
// obtener el ID del archivo
// var fileID = file.getId();
// obtner la url del archivo
var fileUrl = file.getUrl();
// crear cadena de la url del archivo
// var hyperlink = '=HYPERLINK("' + fileUrl + '","' + fileName + '")';
var hyperlink = fileUrl + fileName;
// obeter el tipo de archivo
var fileType = file.getMimeType();
// recopilar datos de fila y añadirlos a la matriz, para luego agregarlos a la hoja
// var rowData = [fileName, fileID, hyperlink, fileType];
var rowData = [fileSimple, fileName, hyperlink, fileType];
fileData.push(rowData);
// incrementar el contador de archivos en 1
fileCounter++;
}
// obtener la ultima fila libre + 1 (despues del encabezado)
var lastRow = sheet.getLastRow() + 1;
// obtener el largo del array
var arrayLength = fileData.length;
// obtener el ancho de los registros del array (cantidad de columnas)
var arrayWidth = fileData[0].length;
sheet.getRange(lastRow, 1, arrayLength, arrayWidth).setValues(fileData);
}
URL: https://www.youtube.com/watch?v=dFkHKXR2nxQ
Formulario Script en Google Sheet, con búsqueda y modificaciones
//
Limpiar
celdas
function Limpiar() {
var hojaActiva = SpreadsheetApp.getActiveSpreadsheet();
var formulario = hojaActiva.getSheetByName("Formulario");
var celdasALimpiar = ["B3", "B6", "B8", "B10", "D6", "D8", "D10"]; //
Celdas a limpiar
for (var i=0; i<celdasALimpiar.length; i++){
formulario.getRange(celdasALimpiar[i]).clearContent();
}
}
// Guardar celdas
function Guardar(){
var hojaActiva = SpreadsheetApp.getActiveSpreadsheet();
var formulario = hojaActiva.getSheetByName("Formulario"); // Nombre de
hoja del formulario
var datos = hojaActiva.getSheetByName("Datos"); // Nombre de hoja donde se
almacenan datos
// Celdas de donde se obtendrán los datos a guardar
var valores = [[formulario.getRange("B6").getValue(),
formulario.getRange("B8").getValue(),
formulario.getRange("B10").getValue(),
formulario.getRange("D6").getValue(),
formulario.getRange("D8").getValue(),
formulario.getRange("D10").getValue()]];
// Inyección de datos a hoja donde se almacenan datos
datos.getRange(datos.getLastRow()+1,1,1,6).setValues(valores); // El "6"
se cambia por cantidad de datos a almacenar
Limpiar(); // Ejecución de función para limpieza de celdas
}
// Buscar
var NUM_COLUMNA_BUSQUEDA = 0;
function Buscar() {
var hojaActiva = SpreadsheetApp.getActiveSpreadsheet();
var formulario = hojaActiva.getSheetByName("Formulario"); // Nombre de
hoja del formulario
var valor = formulario.getRange("B3").getValue();
var valores =
hojaActiva.getSheetByName("Datos").getDataRange().getValues(); // Nombre de
hoja donde se almacenan datos
for (var i = 0; i < valores.length; i++) {
var fila = valores[i];
if (fila[NUM_COLUMNA_BUSQUEDA] == valor) {
formulario.getRange("B6").setValue(fila[0]);
formulario.getRange("B8").setValue(fila[1]);
formulario.getRange("B10").setValue(fila[2]);
formulario.getRange("D6").setValue(fila[3]);
formulario.getRange("D8").setValue(fila[4]);
formulario.getRange("D10").setValue(fila[5]);
}
}
}
// Actualizar
function Actualizar(){
var hojaActiva = SpreadsheetApp.getActiveSpreadsheet();
var formulario = hojaActiva.getSheetByName("Formulario"); // Nombre de
hoja del formulario
var datos = hojaActiva.getSheetByName("Datos"); // Nombre de hoja donde se
almacenan datos
var valor = formulario.getRange("B3").getValue();
var valores =
hojaActiva.getSheetByName("Datos").getDataRange().getValues(); // Nombre de
hoja donde se almacenan datos
for (var i = 0; i < valores.length; i++) {
var fila = valores[i];
if(fila[NUM_COLUMNA_BUSQUEDA] == valor) {
var INT_R = i+1
var valores1 = [[formulario.getRange("B6").getValue(),
formulario.getRange("B8").getValue(),
formulario.getRange("B10").getValue(),
formulario.getRange("D6").getValue(),
formulario.getRange("D8").getValue(),
formulario.getRange("D10").getValue()]];
datos.getRange(INT_R, 1, 1, 6).setValues(valores1);
SpreadsheetApp.getUi().alert('Datos actualizados');
Limpiar(); // Ejecución de función para limpieza de celdas
}
}
}
// Eliminar
function Eliminar() {
var hojaActiva = SpreadsheetApp.getActiveSpreadsheet();
var formulario = hojaActiva.getSheetByName("Formulario"); // Nombre de
hoja del formulario
var datos = hojaActiva.getSheetByName("Datos"); // Nombre de hoja donde se
almacenan datos
var interface = SpreadsheetApp.getUi();
var respuesta = interface.alert('¿Está seguro de
borrar?',interface.ButtonSet.YES_NO);
// Proceso si el usuario responde
if (respuesta == interface.Button.YES) {
var valor = formulario.getRange("B3").getValue();
var valores =
hojaActiva.getSheetByName("Datos").getDataRange().getValues(); // Nombre de
hoja donde se almacenan datos
for (var i = 0; i< valores.length; i++) {
var fila = valores[i];
if (fila[NUM_COLUMNA_BUSQUEDA] == valor) {
var INT_R = i+1
datos.deleteRow(INT_R);
Limpiar(); // Ejecución de función para limpieza de celdas
}
}
}
}
Obtención URL de archivos
function VincularArchivos() {
var sheet = SpreadsheetApp.getActive().getActiveSheet();
var folder = DriveApp.getFolderById('COLOCA AQUÍ LA ID DE LA CARPETA');
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var fileId = file.getId();
var fileUrl = file.getUrl();
var fileRow = sheet.getRange('A:A').getValues().flat().indexOf(fileName)+1;
if (fileRow > 0) {
sheet.getRange(fileRow, 2).setValue(fileUrl);