将新创建的Google工作表设置为活动工作表

时间:2017-06-09 23:15:09

标签: google-apps-script

我正在使用Google工作表将数据导入mysql数据库。每个月都会创建一个新工作表,例如06_2017。有没有办法将新创建的工作表设置为活动工作表或基于当前月份& year将该工作表设置为活动状态。而不是硬编码

  var gsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('06_2017'); 
  var gsheetname = sheet.getSheetName();
  var gdata = sheet.getDataRange().getValues();  

2 个答案:

答案 0 :(得分:0)

正如@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();
}

答案 1 :(得分:0)

如果您要坚持使用'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]);

}
相关问题