0

对不起我的英语不好。^^

呃,我找到了一个脚本,可以从一张表复制到另一张表。我的问题是:它的副本与行。我想在脚本运行时复制列并将 2 列添加到 lastcolumn。

这成了一个问题,因为列没有通知。A=1, B=2 等等 copyTo 想要 A1notification。

这是我的脚本:

function Archiv() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var target = SpreadsheetApp.openById("sheetid");
var source_sheet = ss.getSheetByName("sheetname");
var target_sheet = target.getSheetByName("sheetnametarget");
var source_range = source_sheet.getRange("D4:E89");
var last_col = target_sheet.getLastColumn();
target_sheet.insertColumnAfter(last_col);
var target_range = target_sheet.getRange(">>>>(lastcol+1)<<<<4:>>>>>(lastcol+2)<<<<89");
source_range.copyTo(target_range, {contentsOnly:true});
}

该脚本必须每周一运行以存档 2 列的内容。我希望你能理解我的愿望。我已经测试了很多东西,但没有任何帮助。:(

提前谢谢了。

塞巴斯蒂安

4

1 回答 1

1

您可以使用另一种范围选择模式,这将使事情变得非常简单,请参阅此文档,使用整数作为行号和列号。

您的代码可能会变成这样:

function Archiv() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var target = SpreadsheetApp.openById("sheetid");
  var source_sheet = ss.getSheetByName("sheetname");
  var target_sheet = target.getSheetByName("sheetnametarget");
  var source_range = source_sheet.getRange("D4:E89");
  var last_col = target_sheet.getLastColumn();
  while(target_sheet.getMaxColumns()<=last_col+2){// add columns only if necessary
  target_sheet.insertColumnAfter(last_col)}
  var source_values = source_range.getValues();
  var target_range = target_sheet.getRange(4,last_col+1,source_values.length,2);// row Nr4, starting on last column+1, 2 columns width and 89-4 rows heigth
  target_range.setValues(source_values);
}

我使用getValues()setValues()不是copyTo()返回错误:目标和源必须在同一个电子表格中

于 2013-01-09T19:40:14.853 回答