如何在(谷歌)工作表而不是电子表格上设置触发器onOpen? (关注最后一排)

时间:2013-04-17 13:38:30

标签: google-apps-script spreadsheet google-sheets google-spreadsheet-api

我希望将最后一行的重点放在指定的工作表上(或者如果可能的话,将它们放在每一行上),所以这是我在电子表格上由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。那可能吗?

2 个答案:

答案 0 :(得分: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"这将让我做这个功能。

答案 1 :(得分: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 Script documentation似乎表明您需要自定义库来获取除提供的触发事件之外的任何其他触发事件,并且我不确定它是否甚至在原则上可能仅在某个特定时触发工作表已激活。

如果比较是下一个最简单的解决方案,我想检查工作表。