Logo E-Commerce Brasil

Automatização eficiente: otimizando processos com Google Sheets e Google App Script para renomear imagens e melhorar indexação SEO para e-commerce

Por: Sandro Sabião

Gerente de Operações de Marketing de Vendas na Infracommerce

Profissional com mais de 8 anos de experiência em e-commerce de moda. Vivência multidisciplinar entre as áreas operacionais, criativas e de desenvolvimento. Eficaz na gestão de processos, atua de maneira proativa na otimização de recursos, visando potencializar o desempenho das equipes de forma natural e positiva.

No mundo digital, a visibilidade online é essencial para o sucesso de qualquer empreendimento. Uma parte fundamental dessa visibilidade é a otimização para mecanismos de busca, ou SEO. E uma prática comum para melhorar o SEO é a renomeação de imagens de forma significativa e descritiva, permitindo que os motores de busca compreendam melhor o conteúdo visual de uma página.

No entanto, apesar da importância, a tarefa de renomear manualmente um grande volume de imagens pode ser tediosa e consumir muito tempo. Para muitas pequenas empresas ou equipes operacionais, encontrar uma solução eficiente e acessível para essa tarefa pode ser um verdadeiro desafio. Embora existam ferramentas especializadas disponíveis, muitas vezes elas vêm com custos significativos, o que pode ser proibitivo para operações com recursos limitados.

É aqui que entra a beleza da automação inteligente. Com as ferramentas certas e um pouco de criatividade, é possível simplificar processos operacionais complexos sem a necessidade de investimentos caros. Uma solução particularmente eficaz é o uso do Google Sheets em conjunto com o Google Apps Script.

Neste artigo, vou compartilhar como desenvolvemos um fluxo simples e eficiente para renomear e organizar imagens usando o Google Sheets e o Google Apps Script. Essa solução não apenas simplificou o processo, economizando horas de trabalho manual, mas também demonstra o poder da automação para otimizar as operações do dia a dia, mesmo para pequenas equipes com recursos limitados.

Vamos explorar como essa solução pode revolucionar sua abordagem para gerenciamento de imagens e operações online.

É importante ressaltar que essa aplicação é resultado de um estudo e de uma demonstração da facilidade de automatização de processos utilizando Google Sheets e Google Apps Script. Embora tenha sido desenvolvida como um projeto inicial, essa solução simples pode servir como base para aplicações muito mais complexas. Essa abordagem exemplifica como a automação inteligente pode ser implementada de forma acessível e eficiente, proporcionando oportunidades para otimizar uma variedade de operações empresariais.

Esse exemplo básico visa ilustrar o potencial das ferramentas que todos nós temos à disposição, muitas vezes sem perceber o quão poderosas elas podem ser quando utilizadas de maneira criativa. A flexibilidade do Google Apps Script permite que as empresas adaptem os scripts às suas necessidades específicas, independentemente do setor ou do tamanho da operação. Isso significa que, com o conhecimento e a aplicação corretos, pequenas empresas podem competir com operações maiores e mais estabelecidas ao automatizar tarefas tediosas e repetitivas, liberando tempo e recursos para focar em atividades estratégicas e de maior valor agregado.

Por isso, estou compartilhando o modelo de Sheets e os scripts criados, para que outros também possam explorar e expandir essa ideia. É meu desejo que essa iniciativa sirva como uma fonte de inspiração, motivando profissionais e empresas a experimentarem e desenvolverem suas próprias soluções automatizadas. O futuro da produtividade empresarial está na capacidade de inovar e integrar tecnologias de forma eficiente, e essa solução inicial é apenas o começo de um caminho promissor rumo à automação completa e otimização contínua.

Sheets – Modelo do arquivo

Script – Criar Pastas

function createFolders() {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

var startRow = 4; // Começa a verificar a partir da linha 4

var lastRow = sheet.getLastRow();

for (var rowIndex = startRow; rowIndex <= lastRow; rowIndex++) {

var sku = sheet.getRange(rowIndex, 1).getValue(); // Obtém o SKU da mesma linha

// Verifica se a célula da coluna A não está vazia

if (sku) {

// Verifica se a pasta já existe em alguma das pastas “IN” ou “OUT”

var existsInIN = folderExists(sku, ‘IN’);

var existsInOut = folderExists(sku, ‘OUT’);

if (!existsInIN && !existsInOut) {

createFolder(sku);

} else {

var errorMessage = “Erro: Pasta já existente na pasta “;

if (existsInIN && existsInOut) {

errorMessage += “‘IN’ e ‘OUT'”;

} else if (existsInIN) {

errorMessage += “‘IN'”;

} else {

errorMessage += “‘OUT'”;

}

sheet.getRange(rowIndex, 4).setValue(errorMessage);

}

}

}

}

function folderExists(folderName, folderType) {

var folderId = folderType === ‘IN’ ? ‘ID_PASTA_IN’ : ‘ID_PASTA_OUT’;

var folder = DriveApp.getFolderById(folderId);

var existingFolders = folder.getFoldersByName(folderName);

return existingFolders.hasNext();

}

function createFolder(folderName) {

var inFolder = DriveApp.getFolderById(‘ID_PASTA_IN’); // Pasta “IN”

try {

inFolder.createFolder(folderName); // Cria a pasta com o nome do SKU na pasta “IN”

} catch (error) {

Logger.log(“Erro ao criar a pasta: ” + error.message);

}

}

Script – Renomear Imagens

function renameAndMoveFolders() {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

var lastRow = sheet.getLastRow();

for (var rowIndex = 2; rowIndex <= lastRow; rowIndex++) {

var sku = sheet.getRange(rowIndex, 1).getValue(); // Obtém o SKU da mesma linha

var nome = sheet.getRange(rowIndex, 2).getValue(); // Obtém o nome da mesma linha

var shouldExecute = sheet.getRange(rowIndex, 3).getValue(); // Verifica se deve executar o script

var statusCell = sheet.getRange(rowIndex, 4); // Célula para atualizar o status

if (shouldExecute === true) { // Verifica se deve executar o script

executeScript(sheet, rowIndex, sku, nome, statusCell);

}

}

}

function executeScript(sheet, rowIndex, sku, nome, statusCell) {

var inFolder = DriveApp.getFolderById(‘ID_PASTA_IN’); // Pasta “IN”

var outFolder = DriveApp.getFolderById(‘ID_PASTA_OUT’); // Pasta “OUT”

try {

// Verifica se a pasta do SKU existe na pasta “IN”

var skuFolders = inFolder.getFoldersByName(sku);

if (skuFolders.hasNext()) {

var skuFolder = skuFolders.next(); // Obtém a pasta do SKU

// Verifica se a pasta do SKU está vazia (sem arquivos)

if (!skuFolder.getFiles().hasNext()) {

statusCell.setValue(“Erro: Pasta do SKU está vazia”);

return; // Retorna sem prosseguir com o processo

}

// Renomear imagens na pasta do SKU

var images = skuFolder.getFiles();

var count = 1;

while (images.hasNext()) {

var image = images.next();

var newName = nome + “_” + (“0” + count).slice(-2); // Nome do arquivo com sequência numérica

image.setName(newName);

count++;

}

// Mover a pasta do SKU da pasta “IN” para a pasta “OUT”

skuFolder.moveTo(outFolder);

// Define o status como “Concluído” na coluna D

statusCell.setValue(“Concluído”);

} else {

statusCell.setValue(“Erro: Pasta do SKU não encontrada na pasta ‘IN'”);

}

} catch (error) {

// Se houver algum erro, define o status como “Erro” na coluna D

statusCell.setValue(“Erro: ” + error.message);

}

}

Script – Apagar Concluídos

function clearCompletedRows() {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

var lastRow = sheet.getLastRow();

var startRow = 4; // Começa a verificar a partir da linha 4

var statusColumn = 4; // Coluna D

// Percorre as linhas da planilha

for (var rowIndex = startRow; rowIndex <= lastRow; rowIndex++) {

var sku = sheet.getRange(rowIndex, 1).getValue(); // Obtém o valor da célula na coluna A

// Verifica se a célula na coluna A não está vazia

if (sku !== “”) {

var status = sheet.getRange(rowIndex, statusColumn).getValue();

// Se o status for “Concluído”, exclui a linha

if (status === “Concluído”) {

sheet.deleteRow(rowIndex);

}

}

}

}