Google apps script 如何设置触发器';onOpen&x27;在电子表格上而不是在工作表上?(焦点在最后一行)

Google apps script 如何设置触发器';onOpen&x27;在电子表格上而不是在工作表上?(焦点在最后一行),google-apps-script,google-sheets,triggers,google-sheets-api,Google Apps Script,Google Sheets,Triggers,Google Sheets Api,我想把最后一行的焦点放在一张特定的工作表上(或者如果可能的话,放在每一张工作表上),因此下面是我的函数,由工作表上的onOpen触发: function FocusLastRows() { var spsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spsheet.getSheetByName("Usuelle_2013"); var rowInt = sheet.getLastRow(); var colInt = shee

我想把最后一行的焦点放在一张特定的工作表上(或者如果可能的话,放在每一张工作表上),因此下面是我的函数,由工作表上的
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


这是可能的吗?

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

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);
  }
}
似乎表明您需要自定义库来获取所提供的触发事件以外的任何其他触发事件,而且我不确定原则上是否只有在激活某个特定工作表时才可以触发


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

这相当不雅观,但也许可以尝试只检查激活的工作表是否是目标工作表?大概是这样的:

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);
  }
}
似乎表明您需要自定义库来获取所提供的触发事件以外的任何其他触发事件,而且我不确定原则上是否只有在激活某个特定工作表时才可以触发


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

我找到了一个很好的替代方案。它是带有功能链接的自定义菜单

    //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”,它可以让我完成这个功能。

我找到了一个很好的替代方案。它是带有功能链接的自定义菜单

    //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”,它将让我完成此功能。

谢谢你的回复。我理解你的想法,但它只有在目标工作表是好的情况下才会起作用,因为onOpen只触发一次。请看我的备选方案,并告诉我你的想法!!谢谢你的回复。我理解你的想法,但只有当目标工作表是好的,它才会起作用,因为onOpen只触发一次。看看我的替代方案,告诉我你的想法!!