我有两张在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行时,范围将不会更长的工作
答案 0 :(得分:1)
您必须在设置新值之前删除工作表的内容。
yourObj = null;