[英]set newly created google sheet as the active sheet
我正在使用Google表格將數據導入mysql數據庫。 每個月都會為實例06_2017創建一個新工作表。 有沒有一種方法可以將新創建的工作表設置為活動工作表,或者根據當前月份和年份將該工作表設置為活動工作表。 無需硬編碼
var gsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('06_2017');
var gsheetname = sheet.getSheetName();
var gdata = sheet.getDataRange().getValues();
就像@Cooper所說的那樣,您可以將新創建的工作表的名稱存儲在UserProperties
,然后將代碼放在腳本的onOpen()
方法中。
你可以這樣
function onOpen(e)
{
var prop = PropertiesService.getDocumentProperties();
var sheet_name = prop.getProperty(<NAME_OF_SHEET>);
var sp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet_name).activate();
}
如果您要使用模式“ MM_YYYY”命名工作表,則以下代碼將始終激活具有最新日期的工作表。 如果您的計划是在單個文檔中使用不同的命名模式,則需要重構以下代碼以實現此目的。
onOpen()函數是GAS中所謂的簡單觸發器之一,因此打開文檔時將執行此函數中的每個代碼。 sort()方法將根據給定條件對數組元素進行排序。 由於sort()不知道要用於對Sheet對象進行排序的標准,因此您需要傳遞一個比較器函數來覆蓋默認值。
比較器函數解析工作表名稱,並通過將年份和日期(按此順序)傳遞給新的Date()構造函數來創建日期對象。 然后,它使用日期減法的結果從最高值到最低值以降序對'sheets'數組進行排序。
最后,將已排序數組的第一個元素(將是最新創建的圖紙)並將其設置為活動圖紙。
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
sheets.sort(function(a,b) {
var arr1 = a.getName().split("_");
var arr2 = b.getName().split("_");
return new Date(arr2[1], arr2[0]) - new Date(arr1[1], arr1[0]);
});
if (sheets.length < 1) {
return;
}
ss.setActiveSheet(sheets[0]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.