Este artículo complementa el artículo de Semrush sobre la automatización del seguimiento de clasificación sin usar la API.
Si te ha gustado la idea, ¡compártela! para que llegue a muchas mas personas!
Aquí tendríamos el código del script correspondiente:
importCSVFromGmail () función
var threads = GmailApp.search (‘de: ”alberto@ingeniroseo.com” asunto: ”exportar cliente”’);
var mensaje = hilo[0].getMensajes ()[0];
var archivo adjunto = mensaje.getAttachments ()[0];
var nombre de archivo = mensaje.getAttachments ()[0].getNombre ();
if (archivo adjunto.getContentType () === “aplicación / zip”)
var csv = Utilities.unzip (adjunto);
var hoja = SpreadsheetApp.getActiveSheet ();
var csvData = Utilidades.parseCsv (csv[0].getDataAsString (), “,”);
leerDatos (csvData);
//mensaje.mover a la papelera ();
función readData (csvData)
var ss = SpreadsheetApp.getActive ();
// establecer la hoja que nos interesa
var hoja = ss.getSheetByName (‘RANGO’);
// lee las palabras clave que existen en la hoja
rango var = hoja.getRange (2,1, hoja.getLastRow () – 2);
var datos = range.getValues ();
// busca la última columna con fecha e inserta la siguiente 1
var column = parseInt (columnLastDate (hoja));
hoja.insertColumnAfter (columna);
// calcular la fecha de los nuevos datos
// var fecha = nueva Fecha (hoja.getRange (1, columna) .getValue ());
//fecha.establecerFecha(fecha.obtenerFecha()+7);
// fecha = fecha.obtenerFecha() + ‘/’ + (fecha.obtenerMes() + 1);
var newColumn = hoja.getRange (1, columna + 1);
var columna anterior = hoja.getRange (1, columna);
var última fila;
// Calculamos la fecha un día antes de la ejecución
var ahora = nueva fecha ();
var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
var ayer = nueva Fecha (ahora.getTime() – MILLIS_PER_DAY);
newColumn.setValue (ayer);
//nuevaColumna.establecerValor(datos);
newColumn.setFontColors (previousColumn.getFontColors ());
newColumn.setFontFamilies (previousColumn.getFontFamilies ());
newColumn.setFontWeights (previousColumn.getFontWeights ());
newColumn.setFontStyles (previousColumn.getFontStyles ());
para (var CSVRow = 1; CSVRow
var palabra clave = csvData[filaCSV][0].a minúsculas ();
si (palabra clave! = “)
var nuevaPosición = csvData[filaCSV][1];
var url = csvData[filaCSV][3];
var tráfico = (csvData[filaCSV][7] !=’n/d’)? csvData[filaCSV][7] : 5;
for (var filaKW = 0; filaKW
si (datos[filaKW][0].toLowerCase ().trim () == palabra clave.trim ())
hoja.getRange (rowKW + 2,2) .setValue (tráfico);
sheet.getRange (rowKW + 2, column + 1) .setValue (parseInt (newPosition) <100? newPosition: '101');
hoja.getRange (filaKW + 2, columna + 1) .setHorizontalAlignment (“derecha”);
// diferencia desde el 1er dia
hoja.getRango (rowKW + 2, columna + 2) .setFormulaR1C1 (“= R[0]C.[-“+(column-1)+”]-R[0]C.[-“+(column-(column-1))+”]”);
// diferencia con el dia anterior
hoja.getRango (rowKW + 2, columna + 3) .setFormulaR1C1 (“= R[0]C.[-“+(column-(column-3))+”]-R[0]C.[-“+(column-(column-2))+”]”);
// URL anterior
hoja.getRange (filaKW + 2, columna + 5) .setValue (hoja.getRange (filaKW + 2, columna + 4) .getValore ());
// URL
hoja.getRange (rowKW + 2, columna + 4) .setValue (url);
}
// las palabras clave que no figuran en el archivo van a 101
for (i = 2; i <= hoja.getLastRow () - 2; + i ++)
if (hoja.getRange (i, columna + 1) .getValue () == “”)
if (hoja.getRange (i, 2) .getValue () == “)
hoja.getRange (i, 2) .setValue (5);
hoja.getRange (i, columna + 1) .setValue (101);
// diferencia desde el 1er dia
hoja.getRange (i, columna + 2) .setFormulaR1C1 (“= R[0]C.[-“+(column-1)+”]-R[0]C.[-“+(column-(column-1))+”]”);
// diferencia con el dia anterior
hoja.getRange (i, columna + 3) .setFormulaR1C1 (“= R[0]C.[-“+(column-(column-3))+”]-R[0]C.[-“+(column-(column-2))+”]”);
// URL anterior
hoja.getRange (i, columna + 5) .setValue (hoja.getRange (i, columna + 4) .getValue ());
// URL
hoja.getRange (i, columna + 4) .setValue (“”);
// posición promedio del día
hoja.getRange (hoja.getLastRow (), columna + 1) .setFormulaR1C1 (“= SUMA (R[-“+(sheet.getLastRow()-2)+”]C.[0]: R[-“+(sheet.getLastRow()-(sheet.getLastRow()-2))+”]C.[0]) / “+ (Hoja.getLastRow () – 3));
// diferencia porcentual del 1er día
hoja.getRange (hoja.getLastRow (), columna + 2) .setFormulaR1C1 (“= (R[0]C.[-“+(column-1)+”]-R[0]C.[-1]) / R[0]C.[-1]”);
// diferencia porcentual el dia anterior
hoja.getRange (hoja.getLastRow (), columna + 3) .setFormulaR1C1 (“= (R[0]C.[-3]-R[0]C.[-2]) / R[0]C.[-2]”);
// formato condicional de la escala de colores
colorScale (hoja, columna);
hoja.autoResizeColumn (columna + 1);
}
función columnaÚltimaFecha (hoja)
para (var columna = 1; columna
if (hoja.getRange (1, columna) .getValue () == ‘Diferencia día 1’)
volver parseInt (columna-1);
}
función de escala de color (hoja, columna)
regla = SpreadsheetApp.newConditionalFormatRule ()
.setGradientMaxpointWithValue (“# e67c73 ″, SpreadsheetApp.InterpolationType.MAX,” “)
.setGradientMidpointWithValue (“# ffd666 ″, SpreadsheetApp.InterpolationType.PERCENTILE,” 50 “)
.setGradientMinpointWithValue (“# 57bb8a”, SpreadsheetApp.InterpolationType.MIN, “”)
.setRango ([sheet.getRange(2,3,sheet.getLastRow()-3,column-1)])
.para construir();
var reglas = hoja.getConditionalFormatRules ();
reglas.longitud = 0;
reglas.push (regla);
sheet.setConditionalFormatRules (reglas);