Таким образом, суть моего проекта состоит в том, чтобы скопировать новые данные, добавленные в электронную таблицу A, в электронную таблицу B. Цель состоит в том, чтобы использовать электронную таблицу A в качестве метода ввода и электронную таблицу B в качестве журнала всех вводимых данных в A за все время. Мастер лист так сказать. Обратите внимание, что это будет выполнено по временному триггеру, и все данные из листа a будут удалены.
Я взял некоторый код из Stackoverflow (спасибо тем, кто его сделал) и внес некоторые изменения. Я могу скопировать первый набор данных из A в B, но когда я удаляю данные из A, добавляю новые данные и запускаю код, я теряю все, что я ввел в B. Я также могу использовать use = importrange ,
Мое решение было логичным и взять getLastRow
из B и поставить его перед установкой setValues
. Теоретически, это должно получить последний ряд B и ввести новые данные из A в последний ряд B. Просто верно, НЕТ, я пытался выяснить это в течение многих дней и много часов, читая похожие случаи, но я Я не могу преодолеть это препятствие.
Я предполагаю, что я что-то неправильно понял в моей переменной SRange, A1Range
или SData
.
Любая помощь будет очень полезной.
function CopyDataToNewSheet() {
var sss = SpreadsheetApp.openById('XXXXXXXXXXXXXXXXXXXXX');
var ss = sss.getSheetByName('Sheet1');
var lr = ss.getLastRow();
var lc = ss.getLastColumn();
var SRange = ss.getRange(2,1,lr,lc);
var A1Range = SRange.getA1Notation();
var SData = SRange.getValues();
var tss = SpreadsheetApp.openById('XXXXXXXXXXXXXXXXXXXXX');
var ts = tss.getSheetByName('Sheet1');
var tlr = ts.getLastRow()+1;
Logger.log(tlr);
tlr.getRange(A1Range).setValues(SData);
}