1

我想将最后一行集中在特定的工作表上(或者如果可能的话,集中在每个工作表上)所以这是我在工作onOpen表上触发的函数:

function FocusLastRows() {
var spsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spsheet.getSheetByName("Usuelle_2013");
var rowInt = sheet.getLastRow();
var colInt = sheet.getLastColumn();
var range = sheet.getRange(rowInt, colInt)
sheet.setActiveRange(range)
}

此事件有效,但如果我的第一个加载的工作表与我希望它关注的工作表不同,它只会传送到另一张工作表。最好.onOpen在电子表格上设置一个。

那可能吗?

4

2 回答 2

1

我找到了一个很好的选择。它是带有功能链接的自定义菜单。

    //Pierre-luc Des. Script

//Build your menu 
function setMenu() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menubuttons = [ {name: "Dernière ligne usuelle", functionName:  "GOTOLastRow}];
    ss.addMenu("Outils", menubuttons);
} 

function GOTOLastRow() { 
var spsheet = SpreadsheetApp.getActiveSpreadsheet();
var currentTime = new Date();
var sheet = spsheet.getSheetByName("Usuelle_" + currentTime.getFullYear());
var rowInt = sheet.getLastRow();
var colInt = sheet.getLastColumn();
var range = sheet.getRange(rowInt, colInt);
sheet.setActiveRange(range);

}

现在我将有一个可点击的菜单“Outils”,它可以让我执行该功能。

于 2013-04-17T19:32:12.710 回答
0

这相当不雅,但也许尝试检查激活的工作表是否是目标工作表?像这样的东西:

function FocusLastRows() {
var spsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spsheet.getSheetByName("Usuelle_2013");
  if (sheet == spsheet) {
    var rowInt = sheet.getLastRow();
    var colInt = sheet.getLastColumn();
    var range = sheet.getRange(rowInt, colInt);
    sheet.setActiveRange(range);
  }
}

Google Apps 脚本文档似乎表明您需要自定义库来获取除提供的触发事件之外的任何其他触发事件,而且我不确定它是否在原则上仅在激活某个特定工作表时才可能触发。

我认为使用 if 比较检查工作表是下一个最简单的解决方案。

于 2013-04-17T15:08:47.960 回答