Я новичок в кодировании и в SO, но я пытаюсь понять, что я делаю и что происходит в коде.
Я хочу переместить строку между различными электронные таблицы.
У меня есть скрипт в электронной таблице "CORE", который перемещает строку между листами "Home" и "Finished" Ссылка на электронную таблицу :
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if (s.getName() == "Home" && r.getColumn() == 5 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Finished");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
else if (s.getName() == "Finished" && r.getColumn() == 5 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Home");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
Я искал, как переместить данные, расположенные на «готовом» листе, в другую таблицу под названием «БАЗА ДАННЫХ» Ссылка на электронную таблицу :
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Finished");
var range = sheet.getRange("A1:E2");
var values = range.getValues();
var allvals = [];
for (var i = 0; i < values.length; i++) {
allvals.push(values[i]) ;
}
var dataLength = allvals.length;
// alert data
var ui = SpreadsheetApp.getUi();
// ui.alert( JSON.stringify(allvals) )
// copy to another Google Spreadsheet
var newSheet = SpreadsheetApp.openById('1Xn-hrPPr3tQwWMbKdWxHTXcazOqWu1bdHT6A5LZmlD8').getSheets()[0];
var tmp = "A1:E" + dataLength;
var newRange = newSheet.getRange(tmp);
newRange.setValues(values);
}
Но я хочу перенести данные от листа "CORE" / "Завершено" до листа "БАЗА ДАННЫХ" / "DB" без перезаписи других строк, уже находящихся на листе DB. Моя идея состоит в том, чтобы сделать электронную таблицу «БАЗА ДАННЫХ» реальной базой данных, в которую другие листы помещают данные, а другие используют эти данные.
Можно ли перемещать строки между различными электронными таблицами, как в первом коде? Я знаю, что невозможно использовать .openById () с функцией onEdit (), , но самое главное, чтобы переместить строки, не переписывая другие строки уже на целевом листе (DB).