2015-06-03 4 views
0

У меня есть два листа, которые синхронизированы в Google Таблицах с использованием газа я нашел на этом SO, который я положил на спусковой крючок изменения Is there a way to keep two sheets synchronized?Двунаправленная синхронизация, когда строки удаляются

сценария здесь

var sourceSpreadsheetID = "ID HERE"; 
var sourceWorksheetName = "SHEET NAME HERE"; 
var destinationSpreadsheetID = "ID HERE"; 
var destinationWorksheetName = "SHEET NAME HERE"; 

function importData() { 
    var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID); 
    var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName); 
    var thisData = thisWorksheet.getDataRange(); 
    var toSpreadsheet = SpreadsheetApp.openById(destinationSpreadsheetID); 
    var toWorksheet = toSpreadsheet.getSheetByName(destinationWorksheetName); 
    var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(), thisData.getNumColumns()) 
    toRange.setValues(thisData.getValues()); 
} 

Реальная проблема, с которой я столкнулся, заключается в том, что если вы удаляете строку в середине синхронизированного листа, getDataRange вычисляет нижний диапазон данных источника и синхронизирует его только с этим диапазоном на листе адресата, создавая двойные строки для любого вне диапазона

Пример: У меня 4 строк на моем исходном листе и моего назначение листа


б
гр
д

удаление строки с, исходным листом теперь

б
г

листы для конечных точек и в настоящее время
a
б
д
д

я удалить строку 3, сценарий синхронизирует 3 строки на листе назначения, оставив 4-ю строку в виде двойного

Любые мысли были бы приветствовать о том, как преодолеть это, Я просмотрел названные диапазоны, но мне не понравилось, что мне пришлось установить потолок в диапазоне для количества строк, когда создается 1000 строк, диапазон больше не будет работать

+2

'toWorksheet.clear()' должен удалить весь лист. – SpiderPig

+0

, который отлично работает, ответьте, и я приму –

ответ

1

Вам просто нужно удалить содержимое перед установкой новых значений.

toWorksheet.clear() 
toRange.setValues(thisData.getValues()); 
Смежные вопросы