尝试复制隐藏的模板,使其显示,但在复制后再次隐藏它。
hideSheet()
功能不起作用。有任何想法吗?
function googleQuiz(){
//Duplicate Sheet
var ss =SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.setActiveSheet(ss.getSheetByName('QuizFormTPlate'));
ss.duplicateActiveSheet();
sheet.hideSheet();
//Rename sheet
var dSheet = ss.setActiveSheet(ss.getSheetByName('Copy of QuizFormTPlate'));
var date = new Date();
var tz = ss.getSpreadsheetTimeZone();
var marksDate = Utilities.formatDate(date, tz, 'dd-MMM');
var name = "G-Quiz ".concat(marksDate);
dSheet.setName(name);
//Insert Cell
var cell = dSheet.getRange("C2");
cell.setValue('Formative');
}
答案 0 :(得分:0)
这是替代解决方案,将复制工作表并将其隐藏
function googleQuiz(){
//Duplicate Sheet
var ss =SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('QuizFormTPlate');
var dSheet = sheet.copyTo(SpreadsheetApp.openById(ss.getId()))
dSheet.showSheet()
//Rename sheet
var date = new Date();
var tz = ss.getSpreadsheetTimeZone();
var marksDate = Utilities.formatDate(date, tz, 'dd-MMM');
var name = "G-Quiz ".concat(marksDate);
dSheet.setName(name);
//Insert Cell
var cell = dSheet.getRange("C2");
cell.setValue('Formative');
}
基本上,不是您使用电子表格对象的duplicateActiveSheet()
功能。您可以使用工作表对象的copyTo()
功能,并为其提供当前的电子表格。
sheet.copyTo(SpreadsheetApp.openById(ss.getId()))
。
并直接将新工作表对象传递给var dSheet
以使其可见并重命名。
答案 1 :(得分:0)
问题似乎是由于在隐藏的工作表上使用setActiveSpreadSheet
引起的,如果在ss.getSheetByName('QuizFormTPlate').show();
之前调用ss.setActiveSpreadsheet(ss.getSheetByName('QuizFormTPlate'));
,则对hideSheet()
的调用将可以正常工作。将其发布到此处,以便其他任何遇到此问题的人都可以添加.show()
而不是重新编写整个代码。
答案 2 :(得分:0)
实际上是“ showSheet()” 这对我有用:
var spreadsheet = SpreadsheetApp.getActive();
var sheetTemplate = spreadsheet.getSheetByName('Template');
sheetTemplate.showSheet();
//do something...
sheetTemplate.hideSheet();
由于hideSheet()如果工作表已经被隐藏,则不起作用:
https://developers.google.com/apps-script/reference/spreadsheet/sheet#hidesheet
首先显示隐藏的工作表应该可以解决问题:
https://developers.google.com/apps-script/reference/spreadsheet/sheet#showsheet