Я пытаюсь скопировать строки с одного листа на другой с помощью Google Apps Script, основываясь на соответствующем идентификаторе в столбце 4 каждого, но я не могу найти, как вставить его в соответствующую строку и сделать это без перезаписи существующих данных пустыми ячейками.
В Google Sheets Sheet1 содержит строки новых данных, определенных идентификатором. Sheet2 должен собирать каждую строку, обновляя строки новыми данными, если идентификатор новой строки на Sheet1 совпадает с существующей строкой на Sheet2. В конце дня Sheet1 очищается, и остается только самая актуальная информация о каждом ID-элементе в Sheet2. Иногда строки на Листе 1 заполняются не полностью, и в этом случае только ячейки с данными (из Листа 1) должны быть перезаписаны на Листе 2.
Новые идентификаторы будут добавлены, но я уже более или менее разобрался, как это сделать, и это не часть вопроса:)
function myFunction() {
// Path to Correct Spreadsheet
var ss = SpreadsheetApp.getActive();
var sheet1 = ss.getSheetByName("Sheet1");
var sheet2 = ss.getSheetByName("Sheet2");
var sheet3 = ss.getSheetByName("Sheet3"); //temporary, while I work out how to copy it to the right row in Sheet2
// Get size of ranges
var header = 1; // Number of rows of header info (to skip)
var range1 = sheet1.getDataRange();
var data1 = range1.getValues();
var range2 = sheet2.getDataRange();
var data2 = data2 = range2.getValues();
Logger.log('data1 = ' + data1);
var resultArray = [];
for(var n=header; n < data1.length ; n++){
var keep = false;
for(var p=header; p < data2.length ; p++){
Logger.log(data1[n][0]+' =? '+data2[p][0]);
if( data1[n][3] == data2[p][3]){
resultArray.push(data1[n]);
Logger.log('true');
break ;
}
}
}
sheet3.getRange(+1,1,resultArray.length,resultArray[0].length).setValues(resultArray);
}
Мне удалось собрать воедино код, который находит совпадающие идентификаторы и отправляет всю строку в Sheet3 (сейчас, пока не выяснили, как отправить ее в правую строку в Sheet2). Но это перезаписывает любые существующие данные пустыми ячейками (если они есть), и я не могу заставить {contentOnly: true} работать (это даже правильный подход?)
Я занимался этим всего неделю, изо всех сил, но из глубины. Любая помощь, даже просто указатели в правильном направлении тем для изучения, будет принята с благодарностью. Последние 48 часов я жил в стеке и пытался найти что-то похожее на это, но я ничего не смог найти (возможно, я даже не ищу нужную вещь!). Очень унизительно.