У меня есть функция, которую я получил из онлайн и немного модифицировал для моего собственного использования. Что-то, с чем я не могу работать, это как удалить всю строку и только скопировать определенные строки внутри функции ниже.Как скопировать только определенные строки внутри функции вместо полной строки
Я хотел бы иметь возможность передавать переменные функции для каждого листа и соответствующих столбцов для копирования.
ex. moveCompletedRows (тип, whereToMoveType [клетки двигаться]) {}
function moveCompletedRows(type,whereToMoveType) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('SortBot');
var targetSheet = ss.getSheetByName(whereToMoveType);
var val = sheet.getDataRange().getValues();
var headers = val.shift();
var arr = [], rowsToWriteBack = [];
rowsToWriteBack.push(headers);
val.forEach(function (r, i) {
r[1] == type ? arr.push(r) : rowsToWriteBack.push(r)
});
if (arr.length > 0) {
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, arr.length, arr[0].length)
.setValues(arr);
sheet.clear();
sheet.getRange(1, 1, rowsToWriteBack.length, rowsToWriteBack[0].length)
.clear()
.setValues(rowsToWriteBack);
}
}
Помимо: Причина моей текущей настройки необходимо изменить это, так как моя форма настолько велика (мульти форма раздел) представляет много столбцов (A -CH), и каждая запись вводит только около 8 (только в разных столбцах), даже со скрытыми столбцами, когда я просматриваю страницы на мобильном устройстве, она зависает/падает 50% времени (я не уверен, что это полностью решит это, поскольку лист со многими строками будет по-прежнему находиться на этом листе мастера, обратите внимание, что он будет пустым). Что заставляет меня сомневаться, если просто наличие листа с таким количеством ячеек, которое никогда не просматривается на мобильном устройстве, заставляет лист загружаться очень медленно?
Благодаря
Edit:
Ссылка на Диске, содержащую форму/лист/скрипт
https://drive.google.com/folderview?id=0B-7N8A7FPKw5V20yRVFQcmNZTlk&usp=sharing
Edit2:
пытался работать на этом последние несколько дни и у меня есть дополнительный сценарий у меня пол рабочего, но часть отмечено ниже, что я хочу, что работать в исходной формуле
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet2Copy = ss.getSheetByName('Actions');
var targetSheet = ss.getSheetByName('Test');
var data = sheet2Copy.getRange(1,1, sheet2Copy.getLastRow(), sheet2Copy.getLastColumn()).getValues();
var dest = [];
for (var i = 0; i < data.length; i++) {
Logger.log(data[i][12]);// just to check if the condition is true sometimes ;-)
if (data[i][1] == "Action") {
var rowsToWriteBack = []; // initialise intermediate array
// GET THIS WORKING IN ABOVE FORMULA
// Trying to select columns to put into new sheet. Will eventually make the #'s variables passed into the formula to make it dynamic
rowsToWriteBack.push(
data[i][0],
data[i][1],
data[i][2],
data[i][10],
data[i][11],
data[i][12],
data[i][13]
);// choose here the columns you want to add
dest.push(rowsToWriteBack);
}
} // here is the end of the for loop
Logger.log(dest) ; // log the dest array instead
if (dest.length > 0) { // if something has been written in your array then batch write it to the dest. sheet
targetSheet.getRange(targetSheet.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
}
}
Я не до конца ясно, на чем ты пытаетесь сделать, вы пытаетесь извлечь только заполненные столбцы строки или только столбцы диапазона, которые содержат значение? Было бы полезно сделать снимок экрана с нужными вводами и выводами. –
Этот скрипт не поможет. Он сортирует вашу таблицу, чтобы увидеть, соответствует ли второй столбец определенному тексту/номеру (первый аргумент «type»). –
@RobinGertenbach У меня очень большая форма, которая разрезана на многие разделы по первому заданному вопросу. Все ответы формы переходят на лист SortBot, который сортирует их на соответствующие вкладки листа. Проблема заключается в моей функции над копиями по всем ячейкам в строке (и мне нужно сказать это для типа = инвентарь только для копирования по столбцам x, y, z. Я пытаюсь разделить столбцы на разные листы без дополнительных столбцы, поскольку он вызывает значительное отставание в андроиде и зависает. Обратите внимание, что некоторые столбцы будут пустыми, поскольку они будут заполнены после отправки ответа. – Davey