【发布时间】:2013-12-26 19:40:52
【问题描述】:
我一直在寻找一种方法来复制一行中的某些单元格并将它们粘贴到另一个电子表格中,但我似乎只能找到一种方法,只需在一个电子表格中从一个工作表到另一个工作表或处理代码的问题远在我头顶。我刚刚学习在 Google 电子表格中编码,但我似乎无法正确使用它。这是我现在的代码,我正在首先复制一个单元格,然后我会得到一个循环来遍历行并选择我想要复制的单元格。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var master = SpreadsheetApp.openById('0AgcCWQn-aoI1dFpLVE4tSENwcThrYnlMUzhuRmdWU2c');
var target = SpreadsheetApp.openById('0AgcCWQn-aoI1dF96X2dBT2dVVFZ2SU1NRWdYTDJhT2c');
var master_sheet = master.getSheetByName("Steve2");
var target_sheet = target.getSheetByName("Corbin1");
var master_range = master_sheet.getRange("A1");
var target_range = target_sheet.getRange("A1");
master_range.copyTo(target_range);
现在它给我一个错误,说它不能调用 null 的 getRange 方法。我不确定我是否正确使用了 OpenById,或者我什至可以在这种情况下使用它。
好的,我现在可以正常工作了。它完美地复制了行,并且只复制了我想要的单元格。现在我需要粘贴部分的帮助。它可以很好地复制所有内容并将其放入另一张表中,但我需要将其复制到下一个可用行和第一个可用列中。因此,如果第 5 行是最后一列数据,我需要将其粘贴到第 6 行并占用前 6 列左右。
这是我目前所拥有的。
function menuItem1() {
var sss = SpreadsheetApp.openById('0AgcCWQn-aoI1dFpLVE4tSENwcThrYnlMUzhuRmdWU2c'); // sss = source spreadsheet Steve2
var ss = sss.getSheetByName('Sheet1'); // ss = source sheet
//Message box asking user to specify the row to be copied
var answer = Browser.inputBox('What row would you like to copy?');
var range = parseInt(answer);
var array = [1,2,3,9,12,30];
//Runs a loop to iterate through array, using array elements as column numbers
for(var i = 0; i < array.length; i++){
var SRange = ss.getRange(answer,1,1,array[i]);
//get A1 notation identifying the range
var A1Range = SRange.getA1Notation();
//get the data values in range
var SData = SRange.getValues();
}
var tss = SpreadsheetApp.openById('0AgcCWQn-aoI1dF96X2dBT2dVVFZ2SU1NRWdYTDJhT2c'); // tss = target spreadsheet Corbin1
var ts = tss.getSheetByName('Sheet1'); // ts = target sheet
//set the target range to the values of the source data
ts.getRange(A1Range).setValues(SData);
//Confirmation message that the row was copied
Browser.msgBox('You have successfully copied Row: ' + answer);
}
【问题讨论】: