例如,我尝试从单元格 A10 跳转到单元格 E600:
我已尝试绘制一个分配给脚本的矩形。
它偶尔会起作用,但大多数时候都会失败。
有没有更简单的方法来实现这一点,而无需对值进行硬编码?
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");
}
还尝试了getUI()
如下评论:
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");
}
这可行,但还是太慢了。应该是一种更简单的方法。