Создание нескольких листов с шаблонами и положением
- Откройте новую электронную таблицу и перейдите в редактор сценариев
- Загрузите код и сохраните его
- Создайте лист с именем «Данные листа»
- Создайте три шаблона
- Запустите createTrigger ()
- Закройте электронную таблицу
- Откройте электронную таблицу и дайте еенекоторое время, и он будет создавать все листы, не беспокоясь о шаблонах или листе данных листа. Код:
function onOpen() {
SpreadsheetApp.getUi().createMenu("My Menu")
.addItem('Create onOpen Trigger', 'createTrigger')
.addToUi();
}
//This is where the sheets get created
function startUp() {
var ss=SpreadsheetApp.getActive();
var templateA=["A","B","C"];
templateA.forEach(function(name){ss.getSheetByName(name).hideSheet();});
var sh=ss.getSheetByName("Sheet Data");
var shts=ss.getSheets();
var shtnames=shts.map(function(sh){if(!sh.isSheetHidden()){return sh.getName();}}).filter(function(e){return e});
var hdnshts=shts.map(function(sh){if(sh.isSheetHidden()){return sh.getName();}}).filter(function(e){return e});
var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
var vA=rg.getValues();
vA.sort(function(a,b){return a[2]-b[2];});
vA.forEach(function(r){
if(shtnames.indexOf(r[0])==-1 && r[0]!=sh.getName()) {
ss.insertSheet(r[0], r[2], {template:ss.getSheetByName(r[1])});
}
shts=ss.getSheets();
shtnames=shts.map(function(sh){if(!sh.isSheetHidden()){return sh.getName();}}).filter(function(e){return e});
});
var end="is near";
}
function isTrigger(funcName){
var r=false;
if(funcName){
var allTriggers=ScriptApp.getProjectTriggers();
for(var i=0;i<allTriggers.length;i++){
if(funcName==allTriggers[i].getHandlerFunction()){
r=true;
break;
}
}
}
return r;
}
//Installable onOpen trigger
//run this function first
function createTrigger() {
var ss=SpreadsheetApp.getActive();
if(!isTrigger('startUp')) {//This keeps you from creating unnecessary triggers
ScriptApp.newTrigger('startUp').forSpreadsheet(ss).onOpen().create()
}
}
//This is useful for testing
function deleteSheets() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName("Sheet Data");
var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
var vA=rg.getValues();
vA.forEach(function(r){
ss.deleteSheet(ss.getSheetByName(r[0]));
});
}
Лист создания:
Три шаблона: я только что создал эти шаблоны какПростые примеры, чтобы помочь в создании ваших листов. Я считаю, что непрограммисты действительно преуспевают в этом процессе, создавая очень необычные таблицы. Для меня я держу их простыми.
Я попытался с помощью этого gif-файла показать, как создаются файлы при первом открытии электронной таблицы. Это не будет создавать дополнительные листы с тем же именем. Но если вы добавите дополнительные имена, он создаст их. Невозможно удалить имена листов, которые были удалены, поэтому вы можете что-то сделать для себя.