Estou tentando pular da célula A10 para a célula E600, por exemplo:
Tentei fazer um desenho retangular atribuído a um script.
Funciona ocasionalmente, mas geralmente falha.
Existe uma maneira mais fácil de implementar isso sem codificar os valores?
function jumpToCell(fromcell, tocell) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var jumps = {
A10: "E600",
A11: "E550",
A12: "E500",
A13: "E450",
A14: "E400",
A15: "E350",
A16: "E300",
A17: "E250",
A18: "E200",
A19: "E150",
A20: "E100",
A21: "E50",
E600: "A10",
E550: "A11",
E500: "A12",
E450: "A13",
E400: "A14",
E350: "A15",
E300: "A16",
E250: "A17",
E200: "A18",
E150: "A19",
E100: "A20",
E50: "A21",
};
Logger.log("fromcell: " + fromcell + " tocell: " + tocell);
if (jumps[fromcell] && jumps[fromcell] === tocell) {
Logger.log("Jumping to: " + tocell);
sheet.getRange(tocell).activate();
} else if (jumps[fromcell]) {
Logger.log("Jumping to mapped destination: " + jumps[fromcell]);
sheet.getRange(jumps[fromcell]).activate();
} else {
Logger.log("No jump found for: " + fromcell);
}
}
function jumpFromA10ToE600() {
Logger.log("Jump from A10 to E600 triggered");
jumpToCell("A10", "E600");
}
function jumpFromE600ToA10() {
Logger.log("Jump from E600 to A10 triggered");
jumpToCell("E600", "A10");
}
function jumpFromA10ToE600() {
jumpToCell("A10", "E600");
}
function jumpFromA11ToE550() {
jumpToCell("A11", "E550");
}
function jumpFromA12ToE500() {
jumpToCell("A12", "E500");
}
function jumpFromA13ToE450() {
jumpToCell("A13", "E450");
}
function jumpFromA14ToE400() {
jumpToCell("A14", "E400");
}
function jumpFromA15ToE350() {
jumpToCell("A15", "E350");
}
function jumpFromA16ToE300() {
jumpToCell("A16", "E300");
}
function jumpFromA17ToE250() {
jumpToCell("A17", "E250");
}
function jumpFromA18ToE200() {
jumpToCell("A18", "E200");
}
function jumpFromA19ToE150() {
jumpToCell("A19", "E150");
}
function jumpFromA20ToE100() {
jumpToCell("A20", "E100");
}
function jumpFromA21ToE50() {
jumpToCell("A21", "E50");
}
function jumpFromE600ToA10() {
jumpToCell("E600", "A10");
}
function jumpFromE550ToA11() {
jumpToCell("E550", "A11");
}
function jumpFromE500ToA12() {
jumpToCell("E500", "A12");
}
function jumpFromE450ToA13() {
jumpToCell("E450", "A13");
}
function jumpFromE400ToA14() {
jumpToCell("E400", "A14");
}
function jumpFromE350ToA15() {
jumpToCell("E350", "A15");
}
function jumpFromE300ToA16() {
jumpToCell("E300", "A16");
}
function jumpFromE250ToA17() {
jumpToCell("E250", "A17");
}
function jumpFromE200ToA18() {
jumpToCell("E200", "A18");
}
function jumpFromE150ToA19() {
jumpToCell("E150", "A19");
}
function jumpFromE100ToA20() {
jumpToCell("E100", "A20");
}
function jumpFromE50ToA21() {
jumpToCell("E50", "A21");
}
Também tentei getUI()
como comentado:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu("Weeks")
.addItem("Week 1", "jumpToE50")
.addItem("Week 2", "jumpToE100")
.addItem("Week 3", "jumpToE150")
.addItem("Week 4", "jumpToE200")
.addItem("Week 5", "jumpToE250")
.addItem("Week 6", "jumpToE300")
.addItem("Week 7", "jumpToE350")
.addItem("Week 8", "jumpToE400")
.addItem("Week 9", "jumpToE450")
.addItem("Week 10", "jumpToE500")
.addItem("Week 11", "jumpToE550")
.addItem("Week 12", "jumpToE600")
.addToUi();
}
function jumpToCell(target) {
if (!target || target.trim() === "") {
Logger.log("Error: Target cell is null or empty.");
return;
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
try {
Logger.log("Jumping to cell: " + target);
sheet.getRange(target).activate();
} catch (e) {
Logger.log("Invalid cell reference: " + target);
}
}
function jumpToE600() {
jumpToCell("E600");
}
function jumpToE550() {
jumpToCell("E550");
}
function jumpToE500() {
jumpToCell("E500");
}
function jumpToE450() {
jumpToCell("E450");
}
function jumpToE400() {
jumpToCell("E400");
}
function jumpToE350() {
jumpToCell("E350");
}
function jumpToE300() {
jumpToCell("E300");
}
function jumpToE250() {
jumpToCell("E250");
}
function jumpToE200() {
jumpToCell("E200");
}
function jumpToE150() {
jumpToCell("E150");
}
function jumpToE100() {
jumpToCell("E100");
}
function jumpToE50() {
jumpToCell("E50");
}
Isso funciona; ainda muito lento. Deveria haver uma maneira mais fácil de fazer isso.
Usando .getUI() para criar Menu
Publicarei meu comentário como uma resposta.
A interface de usuário da classe ajuda os usuários a criar uma barra de menu personalizada na interface de usuário dos editores, permitindo que eles adicionem funções personalizadas.
Código de exemplo:
Isso pode ajudar a retornar à célula
A10
paraA21
usar o loop for of .Referências:
Classe UI
Você também pode usar uma Função Nomeada para gerar um hiperlink para a outra célula.
id : O parâmetro id é o SheetID ou número gid da planilha de destino, mostrado na url. É melhor ter esses números disponíveis, mas se você não tiver, então este script pode ser usado para obtê-los.
intervalo : pode ser qualquer um dos seguintes:
rótulo : O rótulo a ser exibido para o hiperlink.
Tudo isso é demonstrado nesta planilha: JUMP_TO
No Planilhas Google, é possível atribuir uma função do Google Apps Script a uma imagem ou desenho — ref Imagens e desenhos clicáveis no Planilhas Google . Infelizmente, clicar em uma imagem/desenho com um script atribuído não passa um objeto de evento, como acontece com gatilhos simples e instaláveis.
Se você não quiser ter uma função para cada imagem/desenho, uma opção é usar caixas de seleção e gatilhos de edição em vez de imagens/desenhos com funções atribuídas.
Uma maneira fácil de mover-se rapidamente de um lugar para outro em uma planilha é usar intervalos nomeados . Eles não são "codificados" no sentido de que continuam a apontar para o mesmo alvo, mesmo se você adicionar ou excluir linhas.
Depois de criar um intervalo nomeado em cada local de destino, você pode usar nomes de intervalo em um script da mesma forma que
"A1"
as referências de intervalo de tipos:Como alternativa, use um
onEdit(e)
gatilho simples que ative automaticamente a célula "próxima" quando você terminar de editar a anterior. Veja meu script jumpFromCellToCell_() para código de exemplo.Caso precise que a ordem de salto permaneça flexível, você pode pular diretamente para qualquer destino clicando em um nome de intervalo na barra lateral Dados > Intervalos nomeados ou usar a caixa Nome no canto superior esquerdo. Pressione Control+J , digite as primeiras letras de um nome de destino e pressione Enter para pular para lá.