1

我想最後一排集中在一個指定的工作表(或者如果可能的話在他們每個人的),所以這裏是我的功能通過的OnOpen電子表格上觸發:如何在(Google)工作表而不是電子表格上設置觸發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。那可能嗎 ??

回答

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」,它可以讓我做功能。

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似乎表明,你需要自定義庫得到任何其他觸發事件比那些提供,我不知道這是否是即使在原則上只可能觸發當某個特定的紙張被激活時。

我認爲如果比較是下一個最簡單的解決方案,檢查工作表。

+1

謝謝你的回覆。我理解你的想法,但只有在目標表是好的時候纔會有效,因爲onOpen只觸發一次。 – Pilouk

+0

看到我的選擇,並告訴我你的想法! – Pilouk

相關問題