google-apps-script
Servicio de hoja de cálculo
Buscar..
Observaciones
La referencia de API oficial para el servicio de hoja de cálculo se puede encontrar en https://developers.google.com/apps-script/reference/spreadsheet/ .
Hoja
Obtener una referencia a una pestaña de hoja con nombre
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet();//Get active spreadsheet
var sheet_with_name_a = spread_sheet.getSheetByName("sheet_tab_name");
Obtención de la pestaña de hoja activa
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = spread_sheet.getActiveSheet();
Insertar columna
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = spread_sheet.getActiveSheet();
active_sheet.insertColumnAfter(1); // This inserts a column after the first column position
active_sheet.insertColumnBefore(1); // This inserts a column in the first column position
active_sheet.insertColumns(1); // Shifts all columns by one
active_sheet.insertColumns(1, 3); // Shifts all columns by three
active_sheet.insertColumnsAfter(1); // This inserts a column in the second column position
active_sheet.insertColumnsBefore(1, 5); // This inserts five columns before the first column
Insertar fila
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = spread_sheet.getActiveSheet();
active_sheet.insertRowAfter(1); // This inserts a row after the first row position
active_sheet.insertRowBefore(1); // This inserts a row in the first row position
active_sheet.insertRows(1); // Shifts all rows by one
active_sheet.insertRows(1, 3); // Shifts all rows by three
active_sheet.insertRowsAfter(1); // This inserts a row in the second row position
active_sheet.insertRowsBefore(1, 5); // This inserts five rows before the first row
Valor de celda
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = spread_sheet.getActiveSheet();
var cell = range.getCell(1, 1);
var cell_value = cell.getValue();
cell.setValue(100);
Copiar celdas
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = spread_sheet.getActiveSheet();
var rangeToCopy = active_sheet.getRange(1, 1, sheet.getMaxRows(), 5);
rangeToCopy.copyTo(sheet.getRange(1, 6));
Fórmula
var spread_sheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = spread_sheet.getActiveSheet();
var range = active_sheet.getRange("B5");
var formula = range.getFormula()
range.setFormula("=SUM(B3:B4)");
Copie un valor de una hoja a la hoja actual
Imagine que tenemos una hoja de cálculo de Google por separado y necesitamos obtener el valor de la celda B2 a la celda D5 en su hoja actual.
function copyValueandPaste()
{
var source = SpreadsheetApp.openById('spread sheet id is here'); //Separate spreadsheet book
var sourcesheet = source.getSheetByName('Sheet1'); //Sheet tab with source data
var sourceCellValue = sourcesheet.getRange('B2').getValue(); // get B2 cell value
var thisBook = SpreadsheetApp.getActive(); // Active spreadsheet book
var thisSheet = thisBook.getSheetByName('Sheet1'); // Target sheet
thisSheet.getRange('D5').setValue(sourceCellValue); //Set value to target sheet D5 cell
}
Puede encontrar el ID de la hoja de cálculo desde su URL.
Obtener la última fila en una sola columna
function lastRowForColumn(sheet, column){
// Get the last row with data for the whole sheet.
var numRows = sheet.getLastRow();
// Get all data for the given column
var data = sheet.getRange(1, column, numRows).getValues();
// Iterate backwards and find first non empty cell
for(var i = data.length - 1 ; i >= 0 ; i--){
if (data[i][0] != null && data[i][0] != ""){
return i + 1;
}
}
}
Inserción de matrices como filas
Insertar una fila en la parte inferior de una hoja de cálculo es fácil:
var someSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
someSheet.appendRow(["Frodo", "Baggins", "Hobbit", "The Shire", 33]);
Tenga en cuenta que esto agregará la fila después de la última fila no vacía .
Insertar una fila en algún lugar en el medio es un poco más de trabajo:
var someSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var newRowIndex = 2;
var row = ["Gandalf", "?", "Wizard", "?", 2019];
someSheet.insertRowBefore(newRowIndex);
// getRange(row, col, numRows, numCols)
someSheet.getRange(newRowIndex, 1, 1, row.length).setValues([row]); // Note 2D array!
Gran parte de este código inútil se puede abstraer en una función auxiliar:
function insertRowBefore(sheet, rowIndex, rowData) {
sheet.insertRowBefore(rowIndex);
sheet.getRange(rowIndex, 1, 1, rowData.length).setValues([rowData]);
}
Lo que reduce nuestro ejemplo a solo:
var someSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
insertRowBefore(someSheet, 2, ["Gandalf", "?", "Wizard", "?", 2019]);