我正在使用Google工作表将数据导入mysql数据库。每个月都会创建一个新工作表,例如06_2017。有没有办法将新创建的工作表设置为活动工作表或基于当前月份& year将该工作表设置为活动状态。而不是硬编码
var gsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('06_2017');
var gsheetname = sheet.getSheetName();
var gdata = sheet.getDataRange().getValues();
答案 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]);
}