如何在电子表格而不是工作表上设置触发器'onOpen'?(聚焦最后一行)



我想把最后一行集中在一个特定的工作表上(或者如果可能的话,在每一个工作表上),所以这里是我的函数由工作表上的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

这可能吗?

我找到了一个很好的替代方法。它是自定义菜单,带有函数链接。

    //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",这将让我做的功能。

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

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 Script文档似乎表明,您需要自定义库来获得所提供的触发器事件之外的任何其他触发器事件,并且我不确定原则上是否可能仅在激活某个特定表时触发。

我认为使用if比较检查表单是次简单的解决方案。

最新更新