четверг, 12 марта 2015 г.

Копирование или перемещение строки на лист, по значению.Google Таблица

Данный скрипт позволяет копировать строку на лист по значению.

Создайте копию таблицы и авторизуйте скрипт, который лежит внутри:

var ss=SpreadsheetApp.getActiveSpreadsheet();
var master = ss.getSheetByName('Общий');
var colWidth = master.getLastColumn();
var sheets = ss.getSheets();

function onOpen() {
  var menuEntries = [ {name: "Копировать", functionName: "copyRows"},     ];
  ss.addMenu("Копирование",menuEntries);
}

function copyRows() {
  var sheetNames = [];// 
  var sheets = ss.getSheets();
  for(s=0;s<sheets.length;++s){sheetNames.push(sheets[s].getName())};
  var selectedfirstRow = ss.getActiveSelection().getRowIndex();
  var selectedHeigth = ss.getActiveSelection().getHeight()
  var selectedFullRange = master.getRange(selectedfirstRow,1,selectedHeigth,colWidth);
  var data = selectedFullRange.getValues();
  for(n=0;n<data.length;++n){
    if(data[n][1].length<16){
     if(sheetNames.toString().match(data[n][1].toString().replace(/ /g,''))!=data[n][1].toString().replace(/ /g,'')){
     master.getRange(1,1,2,colWidth).copyTo(newSheet.getRange(1,1));
     SpreadsheetApp.flush();
     var sheets = ss.getSheets();
     var sheetNames = [];
     for(s=1;s<sheets.length;++s){sheetNames.push(sheets[s].getName())};
     Logger.log(sheetNames)
     };
     var dest = ss.getSheetByName(data[n][1].toString().replace(/ /g,''));
     Logger.log(data[n][1].toString().replace(/ /g,''))
     var destRange = dest.getRange(dest.getLastRow()+1,1);
     master.getRange(selectedfirstRow+n,1,1,colWidth).copyTo(destRange);
     master.deleteRow(ss.getActiveRange().getRow());
     }
  }
}


После авторизации у Вас появится кнопка "Копирование". 
Так же можно заменить копирование на перенос строки. Для этого нужно добавить в конце кода- master.deleteRow(ss.getActiveRange().getRow());