#google-apps-script #google-sheets
Вопрос:
кто — нибудь может мне помочь, пожалуйста-мне нужно переместить строку на другой лист на основе флажка. Я нашел код, и он работает, но он перемещает строку в и листа dest.
function onEdit(e){
var src = e.source.getActiveSheet();
var r = e.range;
if (src.getName() != "calculations" || r.columnStart != 13 || r.rowStart == 1) return;
var dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("orders");
src.getRange(r.rowStart,1,1,12).moveTo(dest.getRange(dest.getLastRow() 1,2,1,13));
src.deleteRow(r.rowStart);
}
Я попытался определить последнюю строку целевого листа, но после добавления этого в код это не работает
function onEdit(e){
var src = e.source.getActiveSheet();
var r = e.range;
if (src.getName() != "calculations" || r.columnStart != 13 || r.rowStart == 1) return;
var dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("orders");
var rng = dest.getRange("B1:M").getValues();
var lrIndex;
for(var i = rng.length-1;i>=0;i--){
lrIndex=i;
if(!rng[i].every(function(c){ return c == ""; })){
break;
}
var lr = lrIndex 1;
}
src.getRange(r.rowStart,1,1,12).moveTo(dest.getRange(dest.lr,1,1,12));
src.deleteRow(r.rowStart);
}
кто-нибудь может мне помочь, пожалуйста?
Комментарии:
1. попробуйте это
src.getRange(r.rowStart,1,1,12).moveTo(dest.getRange(dest.getDataRange().getNumRows() 1,1,1,12))
2. спасибо, что так быстро ответили. к сожалению, эти изменения не помогают. возможно, я неправильно описал свою проблему — у меня есть некоторые данные в листе «расчеты» от столбца A до L. Мне нужно, когда я нажму на флажок в столбце M, переместить эту строку на другой лист в последней пустой строке (не в конце листа) листа «порядок» в столбце B:M.
Ответ №1:
Вероятно, в строке есть ошибка:
src.getRange(r.rowStart,1,1,12).moveTo(dest.getRange(dest.lr,1,1,12));
Так lr
как это число, возможно, должно быть:
src.getRange(r.rowStart,1,1,12).moveTo(dest.getRange(lr,1,1,12));
Просто lr
вместо dest.lr
этого .
Но я не пытался запустить сценарий, это всего лишь предположение.