2015-01-22 3 views
0

DONE !!! Большое спасибо Илье Лапитан, и мой друг Зент. Вы меня спасете :) Что делать:Повторяющийся скрипт для google

  • дубликат лист шаблона;
  • переименовать новый лист, как: «Номер» «имя из основного листа» + (его «All_base», а где список имен)

    function makeCopies() { 
        ///getting active spreadsheet 
        var activeSreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
        var basicSheet = activeSreadsheet.getSheetByName("All_base"); 
        var activeSreadsheet2 = SpreadsheetApp.getActiveSpreadsheet(); 
        var templateSheet = activeSreadsheet2.getSheetByName("1. Win"); 
    
        //setting template sheet as active 
        activeSreadsheet2.setActiveSheet(templateSheet); 
    
        //getting values from selected range 
        var rangeArr = basicSheet.getRange("B4:B6").getValues(); 
    
        //going through range values 
        for(i = 0; i < rangeArr.length; i++){ 
    
        //preparing name for new sheet 
        var name = (i + 2) + '. ' + rangeArr[i][0]; 
    
        //making duplicate of base sheet 
        var newSheet = SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet(); 
    
        //setting new name for duplicated sheet 
        newSheet.setName(name) 
        } 
    }; 
    

ответ

1

Это решение для изготовления дубликатов базовый лист с помощью выбранного диапазона:

function onOpen() { 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Make Copies", 
    functionName : "makeCopies" 
    }]; 
    spreadsheet.addMenu("Duplicate", entries); 
}; 

function makeCopies() { 
    //getting active spreadsheet 
    var activeSreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    //getting basic sheet 
    var basicSheet = activeSreadsheet.getSheetByName("All_base"); 
    //setting basic sheet as active 
    activeSreadsheet.setActiveSheet(basicSheet); 
    //getting values from selected range 
    var range = basicSheet.getRange("D7").getValue().split(", "); 
    //going through range values 
    for(i = 0; i < range.length; i++){ 
     //preparing name for new sheet 
     var name = (i + 1) + '.' + range[i]; 
     //making duplicate of base sheet 
     var newSheet = SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet(); 
     //setting new name for duplicated sheet 
     newSheet.setName(name) 
    } 
}; 

Пример использования:

  1. Выберите диапазон от основного листа
  2. Выберите пункт меню: «Дубликат» -> «Создать копии»
+0

Спасибо за ответ !! Но его создать копию основного списка, где у меня есть только столбец имен .. В другом листе у меня есть шаблон листа, который я хочу дублировать (у него есть некоторые таблицы, формулы), а имена нового листа должны быть взяты из базы лист «All_base». Кроме того, этот скрипт создает новый лист с именем: «name_from range» + имя листа (в моей версии All_base) выглядит так: WindowsAll_base, RoomsAll_base .. и т. Д., Но мне это нужно: 1. Окно, 2. Комнаты .. и т. Д. – Twil

+0

Twil, я изменил скрипт. Я полагаю, что все имена для нового листа находятся в ячейке «D7» листа «All_base». Кроме того, я полагаю, что имена разделены запятой. Надеюсь, сценарий новостей будет более полезен для вас. –

+0

Превосходно! Его почти то, что я хочу сделать! Я обновляю вопрос, добавляю свой код, с изменениями, которые я пытаюсь объяснить. Но этот скрипт не работает правильно. Он создает дубликат с именем из D7 каждым из них: Первый список «1. W», второй список «2. i», третий «3. n», «4. d» и т. Д. Все слово Window .. но необходимо создать полные имена из диапазона D7: D343, его создать только с D7, разделив это слово на каждый символ. - – Twil

Смежные вопросы