删除行时的双向同步

时间:2015-06-03 14:16:35

标签: google-apps-script google-sheets

我有两张在Google表格中使用我在此SO上找到的GAS同步的表单,我将其置于更改触发器上 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行

一  
b  
ç  
d

删除行c,源表现在是  
一  
b  
d

目标工作表同步,现在  
一  
b  
d  
d

我删除第3行,脚本同步目标工作表上的3行,将第4行留作双重

欢迎任何关于如何克服这个问题的想法,我已经查看了命名范围,但不喜欢我必须在行数范围上设置上限,当创建1000行时,范围将不会更长的工作

1 个答案:

答案 0 :(得分:1)

您必须在设置新值之前删除工作表的内容。

yourObj = null;