从一个电子表格更新到另一电子表格时追加多个行

时间:2019-07-10 04:43:31

标签: google-apps-script google-sheets

function clearData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source_sheet = ss.getSheetByName("sheet");
  var source_range = source_sheet.getRange("2:21");
  var values = source_range.getValues();


  var target = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1kNzG4IQrI9TSlGzpIjp_84uWzoraVDSLPyAS-RIJPh4/edit#gid=1047694951");
  var target_sheet = target.getSheetByName("Deposits");
  var target_range = target_sheet.getRange(2,1,values.length,values[19].length);// use the array size to define the range because the target column A is not necessarily the same size at this time.
  target_range.setValues(values);
}

我已经为我的Google工作表创建了此功能,但是它会更新相同的20行。我需要做的是更新行,然后有一个清除函数,清除一个电子表格,然后在前20行下添加另外20行,依此类推,一次有20行的追加行功能。

但是,我尝试的任何代码都无法正常工作。

到目前为止,我附带的代码是

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您的问题是您的代码总是更新相同的20行。在此行中找到原因: [...] <IterationStatus> <IterationId>ArticleRequest_de17201d-5fcd-4d93-8ecf-1977f60f32fa</IterationId> <MaxCount>767</MaxCount> <Count>50</Count> <RequestedBlockIndex>0</RequestedBlockIndex> <RequestedBlockSize>50</RequestedBlockSize> <IterationInfo>F4R returned (50) Articles.</IterationInfo> </IterationStatus> [...]

您的目标范围始终从第2行开始,因此它将覆盖第2行及以下的任何内容。相反,您希望将数据复制到“ LastRow”之后的行中(无论可能是什么)。

尝试一下:

target_sheet.getRange(2,1,values.length,values[19].length)

这里有两个变化:

  1. var targetLR = target.getLastRow(); var target_range = target_sheet.getRange(targetLR+1,1,values.length,values[19].length); 返回具有内容的最后一行的位置。

  2. 因此,我们只需在此值(“ targetLR + 1”)上添加“ 1”,以在下一行定义target_range的开始。