簡體   English   中英

將新創建的Google工作表設置為活動工作表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM