抱歉我的英文。 ^^
嗯,我发现了一个要从工作表复制到另一个工作表的脚本。 我的问题是:它的行副本。 我想复制列并在脚本运行时向lastcolumn添加2列。
它成为一个问题,因为列没有a1notification。 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列的内容。 我希望你能理解我的愿望。 我测试了很多东西,但没有任何帮助。 :(
非常感谢提前。
塞巴斯蒂安
答案 0 :(得分:0)
您可以使用其他范围选择模式,这将使事情变得非常简单,请参阅this doc,使用整数作为行号和列号。
您的代码可能会变成这样:
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()
返回了错误:目标和来源必须位于同一电子表格中